Mongoose: findOneAndUpdate à l'aide de findAndModify

Créé le 10 juil. 2016  ·  3Commentaires  ·  Source: Automattic/mongoose

Pourquoi la méthode findOneAndUpdate utilise-t-elle findAndModify sous le capot au lieu de findOneAndUpdate ?

J'ai besoin de passer les paramètres de projection mais cela ne fonctionne pas car findAndModifiy ne prend pas de tels paramètres, et en tant que tel, il renvoie le document entier.

Par exemple:

Product
      .findOneAndUpdate({
        _id: productId,
      }, {
        $push: {colors: data},
      }, {
        projection: {
          name: 1, 'colors.$': 1,
        },
        returnNewDocument: true,
      })

Commentaire le plus utile

Ouais, il y a un peu de confusion là-bas parce que chaque API veut être son propre flocon de neige spécial :) Maintenant que le pilote mongodb a ajouté une fonction findOneAndUpdate() qui a ses propres bizarreries, je ne sais pas encore comment procéder sur fineOneAndUpdate de mongoose( )

Tous les 3 commentaires

Parce que le findOneAndUpdate() de mongoose est antérieur à l'existence de findOneAndUpdate() dans le pilote mongodb sous-jacent, et que le findOneAndUpdate() du pilote n'est qu'un fin wrapper autour findAndModify toute façon. En outre, le findOneAndUpdate() du pilote a plusieurs sémantiques bizarres, en particulier liées à l'option new et à la différence entre new et returnNewDocument , qui sont gênantes pour la mangouste.

Les projections qui ne fonctionnent pas sont un peu un problème. Essayez d'utiliser 'champs' au lieu de 'projection', car c'est le nom que la fonction sous-jacente findAndModify utilise

Merci de clarifier. Oui, j'ai remarqué qu'il y avait des différences étranges dans les noms, par exemple fields vs projection et new vs returnNewDocument .

Ouais, il y a un peu de confusion là-bas parce que chaque API veut être son propre flocon de neige spécial :) Maintenant que le pilote mongodb a ajouté une fonction findOneAndUpdate() qui a ses propres bizarreries, je ne sais pas encore comment procéder sur fineOneAndUpdate de mongoose( )

Cette page vous a été utile?
0 / 5 - 0 notes