2016-09-18 6 views
0

Ich habe folgendes Schema in MongooseJS:Schieben auf verschachtelte SubDoc Array mit MongooseJS

const ParentChildCommentSchema = new mongoose.Schema({ 
    date: Date, 
    from: { type:mongoose.Schema.Types.ObjectId, ref:'Parent' }, 
    message: String, 
}); 

const ParentChildSchema = new mongoose.Schema({ 
    child: { type:mongoose.Schema.Types.ObjectId, ref:'Child' }, 
    comments: [ ParentChildCommentSchema ], 
}); 

const ParentSchema = new mongoose.Schema({ 
    name: String, 
    description: String, 
    children: [ ParentChildSchema ], 
}); 

Wo ParentsChildren haben, und jede Eltern-/Kind-Beziehung eine Reihe von comments haben kann.

Ich versuche, ein comment zu schieben mit

const query = { 
    "_id": parentId, 
    "children._id": parentChildId, 
}; 

const update = { 
    "$push": { 
    "children.$.comments": { 
     "date": Date.now(), 
     "from": parentId, 
     "message": message, 
    } 
    } 
}; 

Pack.findOneAndUpdate(query, update, err => ...) 

Die Abfrage keine Fehler zu werfen ist. Aber es wird kein Kommentar hinzugefügt. Was mache ich falsch?

+1

Nicht sicher, ob dies einen großen Unterschied macht, aber ändern Sie "$ push" 'in' $ push' – Derek

+0

Ich denke nicht, dass das einen Unterschied macht. Ich habe eine fast identische Abfrage, $ set ist ein Wert in der ParentChildSchema und es funktioniert gut in Anführungszeichen verpackt. – nicholas

+0

Getestet, aber kein Glück. Immer noch erfolgreich abgeschlossen, aber nicht auf das Array drücken. – nicholas

Antwort

1

Es stellte sich heraus, dass das Problem im Router war - nicht die ParentChild-ID durch - also der obige Code ist richtig und funktioniert ordnungsgemäß.