MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Mongoose + lodash étendent la copie incorrecte du tableau d'objets

Je viens de perdre 1 heure sur un problème similaire. J'ai utilisé _.assign{In}() , puis _.merge() puis essayé aussi Document#set() j'ai toujours fini avec des entrées répétées dans le tableau.

La solution de contournement qui fonctionne pour moi

  • attribuer [] à n'importe quel tableau qui est sur le point d'être défini
  • puis assignez l'arborescence entière en utilisant doc.set(attrs)

Exemple (dans mon cas, some_problematic_array causé le même comportement étrange qu'en question):

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);