0

OS is Os X. I installed mongodb through brew.

I open a terminal and enter

mongod

A few rows are then printed in the terminal. DB seems definitely up and running. I see for example:

db version v3.4.3
waiting for connections on port 27017

I then open another terminal and enter

mongo

I see then:

MongoDB shell version v3.4.3
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.3           

I then type in this terminal

show dbs

And I see:

admin  0.000GB
api    0.000GB
local  0.000GB  

So I enter

use api
db.movie.find();

The terminal prints:

{ "_id" : ObjectId("58f34b96d7eac221145a5d4e"), "name" : "tutorials point" }
{ "_id" : ObjectId("58f367e198554c65c4a34c9f"), "name" : "lalaland" }       

I enter:

db.movie.insert({ name: "forreste gump"});

and then the find() command returns:

{ "_id" : ObjectId("58f34b96d7eac221145a5d4e"), "name" : "tutorials point" }
{ "_id" : ObjectId("58f367e198554c65c4a34c9f"), "name" : "lalaland" }
{ "_id" : ObjectId("58f369259a667b015582e4b8"), "name" : "forreste gump" }

Now, I create a new node app with express.js. This is the code:

var express    = require('express');
var app        = express();
var mongoose = require('mongoose');
mongoose.Promise = global.Promise;
var connection = mongoose.createConnection('mongodb://localhost/api');

connection.on('open', function() {
    console.log('opened');
});

var movieSchema = mongoose.Schema({
    name: String
});

var Movie = mongoose.model('Movie', movieSchema);
var pulp = new Movie({ name: 'pulp fiction' });
pulp.save(function (err, fluffy) {
    if (err){
        console.error("Error:");
        console.error(err);
    }
    console.error('inside save');
});
console.log('pulp.name');
console.log(pulp.name);

In package.json I entered

"mongoose": "~4.9.4",

and then run npm install (I can see that version has been installed)

So, when I start the app with

node app.js

In the terminal I see

pulp.name
pulp fiction
opened      

This means that the line "pulp.save" is never excecuted. Or, probably, is stopped by some error that doesnt show up. Im getting crazy on this. I really don't know what the problem is. mongod is up and running, I connect to the right database in mongoose. But still cannot save a document and, most important, I don't see any trace of errors. Which apparently must occur somewhere. How can I debug deeply the mongoose operations?

PS: When I go to terminal where I run mongo client, and I type:

db.movie.find()

I only see

{ "_id" : ObjectId("58f34b96d7eac221145a5d4e"), "name" : "tutorials point" }
{ "_id" : ObjectId("58f367e198554c65c4a34c9f"), "name" : "lalaland" }
{ "_id" : ObjectId("58f369259a667b015582e4b8"), "name" : "forreste gump" }

So "Pulp fiction" was never added.

4
  • Movie vs movie maybe? Commented Apr 16, 2017 at 13:19
  • empty result in mongo client with db.Movie.find(); Commented Apr 16, 2017 at 13:21
  • Using right db? Commented Apr 16, 2017 at 13:23
  • I entered all the details in the question. Commented Apr 16, 2017 at 13:25

1 Answer 1

1

The difference is mongoose.connect() vs mongoose.createConnection() (Also see this question)

Basically works as follows: When usingmongoose.createConnection() you have to do:

var db = mongoose.createConnection(...)
// And use the db variable
var Model = db.model(...); // etc...

Instead of using mongoose.model(...).

This is because by using mongoose.createConnection() you're not creating a connection on the mongoose object, only inside the scope of the db object.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.