MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Mongoose + lodash estendem a matriz de cópia do objeto incorretamente


Acabei de perder 1 hora com um problema semelhante. Eu usei _.assign{In}() , então _.merge() então tentei também Document#set() eu sempre terminei com entradas repetidas na matriz.

A solução alternativa que funciona para mim
  • atribuir [] para qualquer array que está prestes a ser definido
  • então atribua a árvore inteira usando doc.set(attrs)

Exemplo (no meu caso, some_problematic_array causou o mesmo comportamento estranho em questão):
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);