2013-08-24 20 views
9

Czy można zapisać wypełniony dokument?Jak zapisać wypełniony dokument?

Próbuję zrobić:

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

Schematy

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

otrzymuję błąd

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

Odpowiedz

0

to:

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

Informuje mangustę, że pole User będzie zbiorem odniesień typu ObjectId wskazujących inną kolekcję.

Ty, z drugiej strony, staramy się wstawić obiekt tam:

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

Mongoose próbuje go rzucić do ObjectId i kończy się niepowodzeniem. Niezależnie od tego, że pole pseudo nie znajduje się w schemacie grupy.

Spróbuj to zamiast:

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

Ok, ale w ten sposób nie jest bardzo wygodne w moim przypadku, ja pracuję z tej tablicy serwer całe życie, więc trzeba uzyskać dostęp do właściwości użytkowników z niego. Czy naprawdę nie ma sposobu na zbudowanie zaludnionego Doca i zapisanie go? – Ludo

+0

można zdefiniować właściwość 'User' jako obiekt zagnieżdżony zamiast uczynić ją ref – soulcheck

Powiązane problemy