3
我有一個MongooseJS模式,其中一個父文檔引用一組的子文件:不能.push()子文檔轉換成貓鼬陣列
var parentSchema = mongoose.Schema({
items : [{ type: mongoose.Schema.Types.ObjectId, ref: 'Item', required: true }],
...
});
爲了測試我想填充項目陣列上的一些虛擬值父文檔,而無需將它們保存到MongoDB的:
var itemModel = mongoose.model('Item', itemSchema);
var item = new itemModel();
item.Blah = "test data";
然而,當我嘗試這個對象推入陣中,只有_id
存儲:
parent.items.push(item);
console.log("...parent.items[0]: " + parent.items[0]);
console.log("...parent.items[0].Blah: " + parent.items[0].Blah);
輸出:
...parent.items[0]: 52f2bb7fb03dc60000000005
...parent.items[0].Blah: undefined
我可以做的`.populate( '項目')在某種程度上等同? (即:當您從MongoDB中讀取文檔時您將填充數組的方式)
在我的測試中,我沒有調用parent.save(),因爲測試的工作方式。我懷疑這就是爲什麼我不能訪問子對象 –
問題不在於save()與Schema定義。正如我所展示的,嘗試上面的代碼或帶有**空白** Schema對象的代碼,您將看到所有訪問器都失敗。 'Blah'需要在Schema中定義。 –
對我不起作用,我嘗試了findOne並使用save()推送到該子目錄。它會創建新記錄而不是將新項目推送到subdoc – Alex