NodeJS + Mongoose: mise à jour de tous les champs d'un modèle Mongoose
Je suis en train de construire une api à l'aide d'un Noeud, MongoDB et de la Mangouste. Une chose qui m'énerve, c'est que vous n'arrivez pas à sélectionner de multiples domaines à la fois:
app.put('/record/:id', function(req, res) {
Record.findById(req.params.id, function(err, doc) {
if (!err) {
doc.update(req.params);
doc.save();
...
Cependant, il semble que vous avez à travailler sur la mise à jour de la requête et de l'exécuter sur le Modèle de l'objet plutôt que sur l'objet document. Sauf si vous voulez attribuer des propriétés individuelles et d'exécuter save() à la fin.
Est-il un moyen de régler ce problème sans avoir à écrire une Mongo requête?
source d'informationauteur James
Vous devez vous connecter pour publier un commentaire.
jsaak la réponse est bonne, mais ne fonctionne pas pour les objets imbriqués. J'ai élaboré sur sa réponse par la recherche et la définition des objets imbriqués.
J'ai ajouté ces fonctions à un utility.js fichier
mettre en œuvre:
direct de la mise à jour n'est pas recommandé selon ce document:
http://mongoosejs.com/docs/2.7.x/docs/updating-documents.html
je l'ai résolu comme ceci:
Peut-être que cela a changé depuis que cette question a été posée la première fois, mais vous pouvez mettre à jour plusieurs chemins d'accès dans la Mangouste avec le
set
méthode ike:Références
De clarifier la question, il semble que vous prenez des paramètres de la Requête et à l'aide de ces personnes à trouver des et mettre à jour le document en question.
La réponse la plus évidente est de mettre à jour le Modèle objet avec la valeur de la Demande. Qui est ce que vous suggérez...
Mais il semble que vous ne voulez pas le faire? Il semble que vous souhaitez mettre à jour le Modèle de l'objet directement à partir de l'objet de la Requête?
Vous pouvez le faire si vous le voulez vraiment. Vous venez de faire une boucle par
req.params
et définir ladoc
valeurs, le cas échéant.Il devrait être aussi simple que cela. Cependant, vous seulement souhaitez le faire si vous avez tout un tas de code de validation sur le Modèle des objets. Le point de l'ensemble du Modèle est que vous ne voulez pas d'obtenir des données aléatoires dans la DB. La ligne ci-dessus seront terme générique de "définir" les valeurs correctes, mais vous aurez certainement besoin d'inclure du code d'authentification, d'autorisation et de validation autour de cette simple
for
boucle.essayer de mettre à jour la collection sans la trouver, comme ce
L'option upsert créer le document s'il n'existe pas.