我正在使用与nodejs的mongoose。我有下面给出的项目架构和用户架构。
f(n)
我正在尝试按用户ID(项目架构中的o(n * g(n))
)查找项目。
我试图直接找到
var userSchema = new Schema({
email: { type: String, required: true, unique: true },
password: { type: String, required: true },
items : [{ type: Schema.Types.ObjectId, ref: 'Item' }]
});
var itemSchema = new Schema({
name: { type: String, required: true },
_owner : { type: Schema.Types.ObjectId, ref: 'User' }
});
通过搜索类似我发现id需要在ObjectId对象中,所以我尝试了
_owner
在两种情况下var uid = req.decoded._id;
var item = Item.findOne({"_owner": uid});
console.log(item.name); // undefined
都是未定义的。注意我已经使用db重新检查了var uid = new mongoose.Types.ObjectId(req.decoded._id);
var item = Item.findOne({"_owner": uid});
console.log(item.name); // undefined
(通过打印)的值,因此它没有未定义并存在于db中。
我有什么问题吗?
答案 0 :(得分:2)
Model.findOne
是异步调用。它没有返回文档,它将它传递给您需要提供的回调函数作为第二个参数。
var uid = req.decoded._id;
var item = Item.findOne({"_owner": uid}, function(err, item) {
console.log(item.name);
});