2013-08-24 12 views
9

Ist es möglich, ein ausgefülltes Dokument zu speichern?So speichern Sie ein ausgefülltes Dokument?

Ich versuche zu tun:

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

Schemen

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

Ich erhalte die Fehler

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

Antwort

0

Dieses:

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

Sagt Mungo, dass User Feld eine Sammlung von Referenzen des Typs sein wird, die auf eine andere Sammlung zeigen.

Sie, auf der anderen Seite versuchen, dort ein Objekt einzufügen:

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

Mongoose versucht, es zu ObjectId und nicht zu werfen. Abgesehen davon, dass das Feld pseudo nicht im Gruppenschema enthalten ist.

Versuchen Sie stattdessen:

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

Ok, aber auf diese Weise ist nicht sehr bequem in meinem Fall, ich mit diesem Array all Server Leben arbeiten, so brauche ich die Benutzer Objekte, darauf zuzugreifen. Gibt es wirklich keine Möglichkeit, einen bevölkerten Doc zu erstellen und zu speichern? – Ludo

+0

können Sie die 'User' Eigenschaft als verschachteltes Objekt definieren, anstatt es als Referenz zu definieren – soulcheck

Verwandte Themen