Как объединить два объекта в Mongoose - PullRequest
0 голосов
/ 11 мая 2018

Я хотел бы знать, как объединить объекты, используя mongoose.

Например, скажем, мой документ:

{
    a: {
        x: 2,
        y: 3
    }
}

, и у меня есть объект:

{
    x: 3,
    z: 5
}

Я хотел бы объединить их так, чтобы у меня теперь было:

{
    a: {
        x: 3,
        y: 3,
        z: 5
    }
}

Ответы [ 3 ]

0 голосов
/ 08 января 2019

Вы можете использовать Object.assign :

Метод Object.assign () используется для копирования значений всех перечислить собственные свойства от одного или нескольких исходных объектов к цели объект. Он вернет целевой объект.

Пример:

const object1 = {
  a: 1,
  b: 2,
  c: 3
};

const object2 = Object.assign({c: 4, d: 5}, object1);
console.log(object2.c, object2.d);

Или же вы можете использовать синтаксис Spread :

const object1 = {
  a: 1,
  b: 2,
  c: 3
};

const object2 = {c: 4, d: 5, ...object1}
console.log(object2.c, object2.d);
0 голосов
/ 11 января 2019

Другие ответы, касающиеся Object.assign(), у меня не сработали, но вы можете использовать оператор spread, например:

 const user = await User.findById(12345); // your Mongoose model
 const existingProperties = user.properties.toObject(); // existing properties from the user
 const providedProperties = { a: 1 }; // new properties to be inserted/overwritten

 // merge the two objects, this will overwrite properties in existingProperties if
 // they are provided in the providedProperties object, otherwise they will be attached
 const mergedProperties = { ...existingProperties, ...providedProperties };

 user.set({ properties: mergedProperties });
 const updatedUser = await user.save();
0 голосов
/ 08 января 2019

Вы можете попробовать что-то вроде этого:

Object.assign(doc1.a, doc2.toObject())
doc1.save()

Но вы можете использовать delete doc2._id перед тем, как объединить его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...