Mongoose always returning an empty array NodeJS

2018-12-31 12:52发布

问题:

I have tried using find and findOne and both are not returning a document. find is returning an empty array while findOne is returning null. err in both cases in null as well.

Here is my connection:

function connectToDB(){
    mongoose.connect(\"mongodb://localhost/test\"); //i have also tried 127.0.0.1
    db = mongoose.connection;
    db.on(\"error\", console.error.bind(console, \"connection error:\"));
    db.once(\"open\", function callback(){
        console.log(\"CONNECTED\");
    });
};

Here is me schema:

var fileSchema = mongoose.Schema({
    hash: String,
    type: String,
    extension: String,
    size: String,
    uploaded: {type:Date, default:(Date.now)},
    expires: {type:Date, default:(Date.now()+oneDay)}
});
var Model = mongoose.model(\"Model\", fileSchema);

And my query is here:

Model.find({},function(err, file) {
    console.log(err)
    console.log(file);  
});

I can upload things to the database and see them via RockMongo but I cannot fetch them after. This my first time using MongoDB so I think I\'m just missing some of the fundamentals. Any push in the right direction would be great!

回答1:

The call to mongoose.model establishes the name of the collection the model is tied to, with the default being the pluralized, lower-cased model name. So with your code, that would be \'models\'. To use the model with the files collection, change that line to:

var Model = mongoose.model(\"Model\", fileSchema, \"files\");

or

var Model = mongoose.model(\"file\", fileSchema);