Mongoose总是返回一个空数组NodeJS

时间:2013-01-06 15:30:18

标签: node.js mongodb mongoose

我尝试过使用findfindOne,但两者都没有返回文档。在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"); }); };

这是我的联系:

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);

这是我的架构:

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

我的问题在这里:

{{1}}

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

6 个答案:

答案 0 :(得分:42)

mongoose.model的调用确定了模型所绑定的集合的名称,默认为pluralized,较低的模型名称。因此,对于您的代码,这将是'models'。要将模型与files集合一起使用,请将该行更改为:

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

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

答案 1 :(得分:0)

为了避免多元化的复杂性,只需使用以下方法:

var Model = mongoose.model("Model", fileSchema, "pure name your db collection");

这非常令人困惑。[至少对我来说。]

答案 2 :(得分:0)

也有同样的问题。上面的解决方案对我没有用。即使未找到查询,我的应用程序也永远不会返回错误。它返回空数组。所以我把它放在我的代码中:

if(queryResult.length==0) return res.status(404).send("not found");

答案 3 :(得分:0)

const growingUnit= mongoose.model('Growing Unit', growingUnitSchema);

我故意在“增长单元”中留了一个空格,它总是返回空数组。在我的场景中,需要解决的问题是删除该空间以使其成为“ GrowingUnit”。

const growingUnit= mongoose.model('Growing Unit', growingUnitSchema);

答案 4 :(得分:0)

一般“hello world”问题(有时这个问题与猫鼬无关)。

  1. 检查集合是否真的为空(mongoDB atlas 屏幕截图)。

enter image description here

  1. 检查集合查询命令中的小的拼写差异(如 listing 而不是 listings)。

  2. 检查您的连接是否使用了正确的 URI(例如,您试图从 localhost 中存在的集合中检索数据,但使用 mongoDB cluster(云) - 或 - 与连接字符串 URI 相关的任何其他问题)。 https://docs.mongodb.com/manual/reference/connection-string/

答案 5 :(得分:0)

对我来说,问题是 .skip(value),我传递的是 page=1 而不是 page=0。 由于我的记录很少,我总是得到空数组。