gpt4 book ai didi

node.js - 在mongoose模式nodejs中按ObjectId搜索

转载 作者:太空宇宙 更新时间:2023-11-03 23:34:14 25 4
gpt4 key购买 nike

我正在将 mongoose 与 nodejs 一起使用。我有下面给出的项目架构和用户架构。

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(项目架构中的_owner)查找项目。

我尝试过直接查找

var uid = req.decoded._id;
var item = Item.findOne({"_owner": uid});
console.log(item.name); // undefined

通过搜索类似的内容,我发现 id 需要位于 ObjectId 对象中,所以我尝试了

var uid = new mongoose.Types.ObjectId(req.decoded._id);
var item = Item.findOne({"_owner": uid});
console.log(item.name); // undefined

在这两种情况下,item.name 都是未定义的。请注意,我已经使用数据库重新检查了 req.decoded._id 的值(通过打印),因此它没有未定义并存在于数据库中。

我是不是做错了什么?

最佳答案

Model.findOne是一个异步调用。它不会返回文档,而是将其传递给您需要作为第二个参数提供的回调函数。

var uid = req.decoded._id;
var item = Item.findOne({"_owner": uid}, function(err, item) {
console.log(item.name);
});

关于node.js - 在mongoose模式nodejs中按ObjectId搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34558075/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com