【发布时间】:2016-12-05 21:13:24
【问题描述】:
我遇到了一个奇怪的问题。我已经开始使用 MongoDB,但很可能是我做错了什么。
我有以下模型设置:
var cartSchema = mongoose.Schema({
owner: { type: Schema.Types.ObjectId, ref: 'users' },
productline: [{ type: Schema.Types.ObjectId, ref: 'Productline' }]
});
var productlineSchema = mongoose.Schema({
cart: { type: Schema.Types.ObjectId, ref: 'Cart' },
product: { type: Schema.Types.ObjectId, ref: 'products' },
quantity: Number
});
最初,当用户注册时,购物车设置为一个空数组,但随后我们向其中添加了 Productline 对象(因为我可以在我的 GUI 中看到其中的数据,所以这很有效。
我正在尝试读取打算从 cart -> productline -> product
访问的名称值for (var i=0; i < cartModel.productline.length; i++) {
console.log(cartModel.productline[i].product.name);
}
但是得到 TypeError: Cannot read property 'name' of undefined 正好在该行,这意味着 product == "undefined"。
但是,当我使用 MongoDB Compass 签入我的 MongoDB 时,我可以看到它们之间实际上存在联系,据我所知,id 看起来很准确,所以它应该能够读取它.
所以要么我试图以错误的方式达到价值,cartModel.productline[0].product.name。
或者我的代码没有意识到对象已经更新,这很奇怪,因为我什至确保使用Cart.findOne(query, function(err, cartModel) { ... } 来确保我从数据库中得到一个新对象。
有人有什么想法吗?如果需要,我很乐意发布更多代码,我只是试图找到上面最相关的部分,但我可能会在其他地方遗漏一些东西......
【问题讨论】:
标签: node.js mongodb mongoose mongoose-schema mongoose-populate