FBFriendModel.find({
id: 333
}, function (err, docs) {
docs.remove(); //Remove all the documents that match!
});
La méthode ci-dessus ne semble pas fonctionner. Les enregistrements sont toujours là.
Quelqu'un peut-il réparer ?
FBFriendModel.find({
id: 333
}, function (err, docs) {
docs.remove(); //Remove all the documents that match!
});
La méthode ci-dessus ne semble pas fonctionner. Les enregistrements sont toujours là.
Quelqu'un peut-il réparer ?
Si vous n'avez pas envie d'itérer, essayez
FBFriendModel.find({ id:333 }).remove( callback );
o
FBFriendModel.find({ id:333 }).remove().exec();
mongoose.model.find
renvoie un Demande de renseignements qui a une remove
función .
Mise à jour pour Mongoose v5.5.3 - remove()
est désormais obsolète. Utilisation deleteOne()
, deleteMany()
o findOneAndDelete() instead.
Ce logiciel fonctionne-t-il avant/après la suppression du logiciel intermédiaire ? (certaines méthodes de modèle contournent l'intergiciel de document et je ne suis pas sûr que ce soit le cas, la documentation n'est pas claire).
Je suppose que @hunterloftis l'a déjà compris, mais pour tous ceux qui lisent, la réponse est non, cela n'exécutera pas de middleware pré/post sur des documents individuels.
Il semble que de nombreuses autres réponses le mentionnent .exec()
mais ce n'est pas du tout le cas. Est .exec()
nécessaires, y a-t-il des effets secondaires à l'utilisation de ce produit ou non ?
MISE À JOUR : version de Mongoose (5.5.3)
remove() est obsolète et vous pouvez utiliser deleteOne(), deleteMany() ou bulkWrite() à la place.
Depuis le "mongoose": ">=2.7.1"
vous pouvez supprimer le document directement à l'aide de la fonction .remove()
plutôt que de trouver le document et de le supprimer, ce qui me semble plus efficace et plus facile à maintenir.
Voir exemple :
Model.remove({ _id: req.body.id }, function(err) {
if (!err) {
message.type = 'notification!';
}
else {
message.type = 'error';
}
});
UPDATE :
Comme la mangouste 3.8.1
Il existe plusieurs méthodes qui vous permettent de supprimer directement un document, par exemple :
remove
findByIdAndRemove
findOneAndRemove
Se référer à Documentation sur l'API de la mangouste pour plus d'informations.
Comme indiqué dans d'autres commentaires à d'autres réponses, cela permet de contourner l'intergiciel défini sur le schéma et peut s'avérer très dangereux. Ne l'utilisez donc que si vous comprenez l'impact que cela aura. Pour plus d'informations, voir mongoosejs.com/docs/middleware.html
Pour information, jusqu'à présent, je les ai toujours utilisés sans effets secondaires, bien que je n'aie pas eu à utiliser d'intergiciel dans mes projets :)
remove(query)
pourrait potentiellement vider l'ensemble de votre collection si vous passez accidentellement query = {}
. C'est pourquoi je préfère findOneAndRemove(query)
si je ne fais qu'enlever un document.
Étant donné que cette réponse suppose une version assez ancienne de la mangouste, je ne verrais pas d'inconvénient à ce que quelqu'un modifie la réponse acceptée.
C'est en fait l'une des meilleures façons de procéder, car elle permet d'invoquer correctement les logiciels intermédiaires définis sur le schéma - voir mongoosejs.com/docs/middleware.html . Vous ne devriez utiliser les autres méthodes que si vous n'utilisez PAS d'intergiciel dans votre application, et alors avec prudence.
Cela renvoie-t-il une promesse ? Si oui, quel objet est défini lorsque la promesse est résolue ?
@KennyWorden une approche efficace pour trouver la réponse -> mongoosejs.com/docs/api.html puis recherchez ce que vous voulez mais ajoutez '#' à la recherche dans la page avec votre navigateur, par exemple recherchez '#save' et vous verrez qu'il renvoie une promesse.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.