sql >> Base de Datos >  >> NoSQL >> MongoDB

Mongoose + lodash extend copiando la matriz del objeto incorrectamente

Acabo de perder 1 hora en un problema similar. He usado _.assign{In}() , luego _.merge() luego probé también Document#set() Siempre terminé con entradas repetidas en la matriz.

La solución que funciona para mí

  • asignar [] a cualquier matriz que esté a punto de establecerse
  • luego asigne el árbol completo usando doc.set(attrs)

Ejemplo (en mi caso, some_problematic_array causó el mismo comportamiento extraño que en cuestión):

var attrs = _.pick(req.body, [
    'name',
    'tags', // ...
    "some_problematic_array"
]);
var doc = ///... ;

if( attrs.some_problematic_array ) doc.some_problematic_array = [];
                                      ^^^^ ***workaround***
doc.set(attrs);