2017-11-19 3 views
0

Ich arbeite am Meteor. Ich versuche Blog mit commmenting system.For Stiftinsertion mein Schema zu machen, ist dies:Wie in verschachtelten Schema in mongodb aktualisieren?

Posts.insert({ 
        post:post, 
        author:username, 
        date:date, 
        createdAt:new Date(), 
        comment:{ 
         commentBy:'', 
         commentMsg:'' 
        }, 
        userId:Meteor.userId() 
       }) 

Auf den ersten Kommentar Abschnitt leer. Wenn der Benutzer einen bestimmten Beitrag kommentiert, wird der Kommentarbereich gefüllt. Ich versuche, dieses Schema zu aktualisieren:

Posts.update(thisPost,{$addToSet:{comment.commentedBy:Name,comment.commentMsg:post}}); 

Aber seine working.How es nicht richtig machen ??

Antwort

1

für mehrere Bemerkungen zu dem Feld eingeben sollte ein Array sein.

comments:[{ 
    Commentedby:String, 
    CommentedMsh:string 
}] 

Sie können entweder $ addtoset oder $ push,

db.update({_id:post._id},{$push:{comments:newComment}}) 

ODER

db.update({_id:post._id}, { $addToSet: { comments : comment }); 
0

Ich glaube, Sie müssen Anführungszeichen um irgendwelche Punkte Referenzen setzen, wie folgt aus:

Posts.update(thisPost,{$addToSet:{"comment.commentedBy":Name,"comment.commentMsg":post}}); 

Der Grund ist, weil, wenn Sie dies nicht tun, wird der Compiler versuchen und Referenzen widerspricht lokal, das ist nicht das, was Sie wollen, wenn Sie es als eine Zeichenfolge übergeben, dann Mongo wird es tun, wie erwartet.

0

Es gibt zwei Probleme, die ich in Ihren bereitgestellten Informationen finden konnte. Erste ist, dass die comment Eigenschaft sollte ein Array/Sammlung sein, so sollten Sie es initiieren wie folgt (Kommentare umbenannt):

Posts.insert({ 
    ... 
    comments:[], 
    ... 
}) 

Und zweitens, und am wichtigsten Sie zu beantworten Frage, nach der Dokumentation der Der erste Parameter für die Aktualisierung sollte entweder ein Selektor, eine ObjectID oder eine String-ID sein. https://docs.meteor.com/api/collections.html#Mongo-Collection-update

Also Ihr Update sollte wie folgt aussehen:

var comment = { commentBy: 'user-id', commentMsg: 'le-message' } 
Posts.update(post._id, { $addToSet: { comments : comment }); 
Verwandte Themen