J'ai des commentaires intégrés dans un modèle de messages. J'utilise mongoosejs. Après avoir poussé un nouveau commentaire dans un post, je souhaite accéder à l'ID du nouvel commentaire intégré ajouté. Je ne sais pas comment l'obtenir.
Voici comment le code ressemble. P> dans le code ci-dessus, l'ID du commentaire n'est pas retourné. NOTE Il y a un champ _id créé dans la base de données. P> Le schéma ressemble à p>
3 Réponses :
le DOC intégré poussé à _ID code> de document est en fait attribué par le client, et non le serveur. Donc le
_id code> du nouveau commentaire est disponible juste après que vous appeliez:
post.comments code> aura
_id code> attribué tel qu'il est ajouté, vous pouvez donc le tirer à partir de là: p>
Bien que, il a été marqué comme résolu, mais si l'on utilise si l'on utilise $ poussez pour ajouter le document dans la matrice. Comment récupérer l'identifiant dans ce cas. Exemple: Laisser NewValue = attendre modèle.findonandupdate ({Nom: 'Nouvelle valeur', 'Commentaires.name': {$ NE: NEWCOMMENT.Name}}, {$ PUSH: {Commentaires: NewComment}}, {nouveau : vrai}) .exec (); code>
échantillon p> Vérifiez dans la coque de Mongo DB P> _ID code> est généré au client, vous pouvez obtenir l'identifiant du document intégré par
commentaire.Id code>
> db.stories.findOne()
{
"title" : "1111",
"_id" : ObjectId("5093c6523f0446990e000003"),
"comments" : [
{
"_id" : ObjectId("5093c65e3f0446990e000004"),
"text" : "hi"
}
],
"__v" : 0
}
Vous pouvez générer manuellement le _id alors vous n'avez pas à vous soucier de le retirer plus tard.
var mongoose = require('mongoose'); var myId = mongoose.Types.ObjectId(); // then set the _id key manually in your object _id: myId // or myObject[_id] = myId // then you can use it wherever
Où est-ce que
commentaire code> vient?
c'est un objet JSON qui est créé dans une autre partie du code ... au-dessus de celui donné.