2013-08-24 83 views
9

是否可以保存填充文檔?如何保存填充的文檔?

我試圖做的事:

var Group = new Db['Group'](); 
for (var i=0; i<50; i++) 
    Db.Members.push({ User: { _id: "521014731e27b1b008000002"}, pseudo: 'John' }); 
Group.save(); 

架構

var GroupSchemaModel = { 
    Members: [{ 
     User: { type: mongoose.Schema.Types.ObjectId, ref: 'User' }, 
     updated_at: { type: Date, required: true, default: Date.now } 
    }] 
}; 

我得到的錯誤

{ message: 'Cast to ObjectId failed for value "[object Object]" at path "User"', 
name: 'CastError', 
type: 'ObjectId', 
value: { _id: '521014731e27b1b008000002' }, 
path: 'User' } 

回答

0

此:

User: { type: mongoose.Schema.Types.ObjectId, ref: 'User' }, 

告訴貓鼬User字段將指向另一個集合ObjectId類型的引用的集合。

你,在另一方面,試圖插入的對象有:

Db.Members.push({ User: { _id: "521014731e27b1b008000002"}, pseudo: 'John' }); 

貓鼬試圖投它ObjectId和失敗。這是因爲pseudo字段不在組模式中。

試試這個:

Db.Members.push({User: mongoose.Types.ObjectId("521014731e27b1b008000002"), updated_at: whatever}); 
+0

好的,但這種方式是不是在我的情況很方便,我與這個陣列工作的所有服務器的生活,所以我需要從它訪問的用戶屬性。真的沒有辦法建立一個人口稠密的文件並保存它嗎? – Ludo

+0

您可以將'User'屬性定義爲嵌套對象,而不是將其設置爲ref – soulcheck