猫鼬查询objectID不能按预期方式

时间:2018-07-06 12:14:28

标签: javascript node.js mongodb mongoose objectid

我有一个名为Project的Mongoose模型,该模型在其架构中有一个名为user的字段,类型为mongoose.Schema.Types.ObjectId,引用为User(指的是{ {1}}模型。

这是User模式的user部分:

Project

我想找到所有具有特定“用户”值的项目。我知道用户的ObjectID,目前正在执行以下操作:

user: {
    type: mongoose.Schema.Types.ObjectId,
    ref: "User",
    required: true
}

如上面的注释中所述,User.findOne({ username: "example" }, (err, projectUser) => { if(err) throw err; // doesn't throw an error console.log(projectUser); // logs the user object console.log(projectUser._id); // logs 5b2949e8aac1521ca83d5750 console.log(typeof projectUser._id); // logs 'object' Project.find({ user: projectUser._id}, (err, projects) => { if(err) throw err; // also doesn't throw an error console.log(JSON.stringify(projects, null, 4)); // logs '[]' }); }); 查询返回一个空数组,没有错误。 我已手动确认有3个项目属于“示例”用户,但没有一个出现。

这是Project.find模型控制的projects集合中的示例文档(如Mongo Compass所示):

Mongo Compass excerpt

与Mongo Project s有点困惑吗?感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

对不起,每个人,我已经找到了我的问题的答案:我犯了一个愚蠢的错误。

projects集合的其他3个摘录中(未显示),username的{​​{1}}被一些不同的代码插入到User字段中user模式,而不是Project。这是属于用户名ObjectID的用户的3个项目。

结果,什么也没有返回。不便之处,敬请谅解。