sql >> Database teknologi >  >> NoSQL >> MongoDB

Mongoose + lodash udvider kopieringsarrayet af objektet forkert

Jeg har lige spildt 1 time på et lignende problem. Jeg har brugt _.assign{In}() , derefter _.merge() prøvede derefter også Document#set() Jeg har altid afsluttet med gentagne indtastninger i array.

Løsningen, der virker for mig

  • tildel [] til ethvert array, der er ved at blive sat
  • tildel derefter hele træet ved hjælp af doc.set(attrs)

Eksempel (i mit tilfælde, some_problematic_array forårsaget samme mærkelige adfærd som den pågældende):

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


  1. Mongo DB:Find indlejret matrixværdi

  2. Hvordan implementerer jeg søgefilterforespørgsel ved hjælp af mongodb?

  3. Mongoose:Hvordan opdaterer man et eksisterende element i array?

  4. Hvordan køres db.killOp() ved hjælp af MongoDB native Node.js driver?