Mongoose总是返回一个空数组NodeJS

loc*_*zak 18 mongoose mongodb node.js

我尝试过使用find并且findOne两者都没有返回文档.find是在返回一个空数组findOne被返回null.err在这两种情况下null也是如此.

这是我的联系:

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");
    });
};
Run Code Online (Sandbox Code Playgroud)

这是我的架构:

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);
Run Code Online (Sandbox Code Playgroud)

我的查询在这里:

Model.find({},function(err, file) {
    console.log(err)
    console.log(file);  
});
Run Code Online (Sandbox Code Playgroud)

我可以将内容上传到数据库并通过RockMongo查看,但我无法在之后获取它们.这是我第一次使用MongoDB,所以我想我只是缺少一些基础知识.任何正确方向的推动都会很棒!

Joh*_*yHK 48

调用mongoose.model建立模型所绑定的集合的名称,默认为复数,低级的模型名称.所以使用你的代码,那就是'models'.要将模型与files集合一起使用,请将该行更改为:

var Model = mongoose.model("Model", fileSchema, "files");
Run Code Online (Sandbox Code Playgroud)

要么

var Model = mongoose.model("file", fileSchema);
Run Code Online (Sandbox Code Playgroud)

  • 节省了一天.非常感谢!遗憾的是官方指南中没有强调这一点. (4认同)
  • 很漂亮,非常感谢.我很惊讶我所遵循的教程都没有提到过. (3认同)