2013-08-24 37 views
9

Có thể lưu một tài liệu được điền không?Làm thế nào để lưu tài liệu dân cư?

Tôi cố gắng để làm:

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

Schemas

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

tôi nhận được lỗi

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

Trả lời

0

này:

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

Cho biết mongoose rằng User trường sẽ là một tập hợp các tài liệu tham khảo của loại ObjectId trỏ đến một bộ sưu tập.

Bạn, mặt khác, đang cố gắng để chèn một đối tượng có:

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

Mongoose cố gắng đúc nó vào ObjectId và thất bại. Đó là ngoài thực tế là trường pseudo không có trong lược đồ nhóm.

Hãy thử điều này thay vì:

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

Ok, nhưng cách này không phải là rất thuận tiện trong trường hợp của tôi, tôi đang làm việc với mảng này tất cả các đời máy chủ, vì vậy tôi cần phải truy cập vào các thuộc tính người dùng từ nó. Có thực sự không có cách nào để xây dựng một Doc cư dân và lưu nó? – Ludo

+0

bạn có thể xác định thuộc tính 'User' là đối tượng lồng nhau thay vì làm cho nó là một ref – soulcheck