Mongoose: findOneAndUpdate usando findAndModify

Criado em 10 jul. 2016  ·  3Comentários  ·  Fonte: Automattic/mongoose

Por que o método findOneAndUpdate está usando findAndModify nos bastidores em vez de findOneAndUpdate ?

Eu preciso passar as configurações de projeção, mas não está funcionando porque findAndModifiy não aceita esses parâmetros e, como tal, está retornando o documento inteiro.

Por exemplo:

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

Comentários muito úteis

Sim, há uma pequena confusão lá porque cada API quer ser seu próprio floco de neve especial :) Agora que o driver mongodb adicionou uma função findOneAndUpdate() que tem suas próprias peculiaridades, ainda não tenho certeza de como proceder no fineOneAndUpdate do mongoose ( )

Todos 3 comentários

Porque o findOneAndUpdate() long do mangusto antecede a existência de findOneAndUpdate() no driver mongodb subjacente, e o findOneAndUpdate() do driver é apenas um invólucro fino em torno findAndModify qualquer maneira. Além disso, o findOneAndUpdate() do driver tem várias semânticas peculiares, especialmente relacionadas à opção new e a diferença entre new e returnNewDocument , que são problemáticas para o mangusto.

Projeções que não funcionam são um problema. Tente usar 'campos' em vez de 'projeção', porque esse é o nome que a função findAndModify subjacente usa

Obrigado por esclarecer. Sim, notei que havia algumas diferenças estranhas na nomenclatura, por exemplo, fields vs projection e new vs returnNewDocument .

Sim, há uma pequena confusão lá porque cada API quer ser seu próprio floco de neve especial :) Agora que o driver mongodb adicionou uma função findOneAndUpdate() que tem suas próprias peculiaridades, ainda não tenho certeza de como proceder no fineOneAndUpdate do mongoose ( )

Esta página foi útil?
0 / 5 - 0 avaliações