Mongoose: findOneAndUpdate usando findAndModify

Creado en 10 jul. 2016  ·  3Comentarios  ·  Fuente: Automattic/mongoose

¿Por qué el método findOneAndUpdate usa findAndModify debajo del capó en lugar de findOneAndUpdate ?

Necesito pasar la configuración de proyección, pero no funciona porque findAndModifiy no toma dichos parámetros y, como tal, devuelve el documento completo.

P.ej:

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

Comentario más útil

Sí, hay un poco de confusión porque cada API quiere ser su propio copo de nieve especial :) Ahora que el controlador mongodb agregó una función findOneAndUpdate() que tiene sus propias peculiaridades, aún no estoy seguro de cómo proceder con fineOneAndUpdate de mongoose ( )

Todos 3 comentarios

Porque el findOneAndUpdate() de mongoose es anterior a la existencia de findOneAndUpdate() en el controlador mongodb subyacente, y el findOneAndUpdate() del controlador es solo una envoltura delgada alrededor findAndModify todos modos. Además, el findOneAndUpdate() del controlador tiene varias semánticas peculiares, especialmente relacionadas con la opción new y la diferencia entre new y returnNewDocument , que son problemáticas para la mangosta.

Las proyecciones que no funcionan son un pequeño problema. Intente usar 'campos' en lugar de 'proyección', porque ese es el nombre que usa la función subyacente findAndModify

Gracias por aclararlo. Sí, noté que había algunas diferencias extrañas en los nombres, por ejemplo, fields frente a projection y new frente a returnNewDocument .

Sí, hay un poco de confusión porque cada API quiere ser su propio copo de nieve especial :) Ahora que el controlador mongodb agregó una función findOneAndUpdate() que tiene sus propias peculiaridades, aún no estoy seguro de cómo proceder con fineOneAndUpdate de mongoose ( )

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

Mikeysax picture Mikeysax  ·  3Comentarios

lukasz-zak picture lukasz-zak  ·  3Comentarios

weisjohn picture weisjohn  ·  3Comentarios

p3x-robot picture p3x-robot  ·  3Comentarios

adamreisnz picture adamreisnz  ·  3Comentarios