在貓鼬,目前我得到2架構第一個是產品的細節,第二個是在單獨的文件貓鼬填入回空
庫存兩個模式都產品詳情架構
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var productDetailSchema = new Schema({
ProductID:{type:String,unique:true, require:true},
ProductName:{type:String, require:true},
Spec:String,
Price:String,
Unit:String,
OwnBrand:Boolean,
Inventory:{ type: Schema.Types.ObjectId, ref: 'inventoryModel'}
}, {collection:'products'});
module.exports = mongoose.model('productDetailModel', productDetailSchema)
庫存模式
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var inventorySchema = new Schema({
product:{ type: Schema.Types.ObjectId, ref: 'productDetailModel' },
stockLevel:Number
}, {collection:'inventory'});
module.exports = mongoose.model('inventoryModel', inventorySchema)
在這種情況下,我想將庫存stockLevel放入productDetail。像這樣
{
ProductID:'P701',
ProductName:'popcorn',
Spec:'Large Pack',
Price:'10.00',
Unit:'packs'
Inventory: 20
}
所以我嘗試使用貓鼬填入方法
productDetail.findOne({ProductID:'P701'}).populate('Inventory').exec(function(err, doc){
if(err){
console.log(err)
}else{
console.log(doc)
}
})
這是我在「Inventory收集」
{
"_id" : ObjectId("584f663d95dfa29bad337572"),
"ProductID": "P701",
"StockLevel": "20"
}
和所數據「ProductDetail Collection」中的數據
{
_id : ObjectId("584a3cea027c1f62da941acf"),
ProductID:'P701',
ProductName:'popcorn',
Spec:'Large Pack',
Price:'10.00',
Unit:'packs'
}
由於某些原因,沒有顯示錯誤,但console.log(doc)仍未包含任何Inventory:stockLevel。我知道我做錯了什麼,但我不知道它在哪裏。什麼樣的關鍵概念我錯過了這個代碼的工作?預先感謝您
你能說明你在'productDetailModel'中保存'inventoryModel' _id的具體方法嗎? –
請問您是否在ProductId的productDetail:'P701'中發佈了內容?您好像在保存產品詳細信息時存儲無效的庫存refId。 –