MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Mongoose + Lodash erweitern das Kopieren des Objektarrays falsch

Ich habe gerade 1 Stunde mit einem ähnlichen Problem verschwendet. Ich habe _.assign{In}() verwendet , dann _.merge() dann auch Document#set() probiert Ich habe immer mit wiederholten Einträgen im Array geendet.

Die Problemumgehung, die für mich funktioniert

  • weisen Sie [] zu zu jedem Array, das gesetzt werden soll
  • weisen Sie dann den gesamten Baum mit doc.set(attrs) zu

Beispiel (in meinem Fall some_problematic_array dasselbe seltsame Verhalten wie in Frage verursacht):

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