sql >> Databasteknik >  >> NoSQL >> MongoDB

Mongoose + lodash utökar kopieringsarrayen för objektet felaktigt

Jag har precis slösat bort 1 timme på liknande problem. Jag har använt _.assign{In}() , sedan _.merge() försökte sedan också Document#set() Jag har alltid avslutat med upprepade poster i array.

Lösningen som fungerar för mig

  • tilldela [] till valfri array som är på väg att ställas in
  • tilldela sedan hela trädet med doc.set(attrs)

Exempel (i mitt fall, some_problematic_array orsakade samma konstiga beteende som i fråga):

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. Installerar MongoDB på CentOS 7

  2. Mongo datumintervallsindex med filter

  3. InvalidDocument:Kan inte koda objekt:<Användare:Användarobjekt> ReferenceField med MongoEngine

  4. Få den senaste skivan från mongodb collection