可以在mongoDB nodejs中将一个对象字段设置为多个对象吗?

时间:2019-05-09 10:01:46

标签: javascript node.js mongodb

我正在尝试从node.js服务器将一些设置保存在mongoDB数据库中。 我在保存这些设置时遇到了麻烦。

我尝试更新文档中对象的单个对象字段:

global: {
    Card1: {
        indexContent: 1,
        indexDisplay: 3,
    },
    Card3: {
        indexContent: 1,
        indexDisplay: 8,
    },
    {...}
}

仅更新其中一张“卡”。

我找不到任何合适的方法来执行此操作,所以现在我正在恢复整个对象,更改要在本地更新的字段,然后将全局设置为整个对象。

db.collection('users').findOne(decoded._id, (err, item) => {
    console.log(item);
    obj = (typeof item.global === "undefined") ? {} : item.global;
    console.log("------------------------------------------");
    console.log(obj);
    // title here is set to "Card#" with # the number i'm updating.
    obj[title] = toAdd;
    console.log("------------------------------------------");
    console.log(obj);
    db.collection('users').update(item,
        {$set: {"global": obj}}, (err, result) => {

但是,当我尝试一次又一次地更新3张卡时(从上面的代码中),这是我得到的:

// run with Card6, global not in database.
------------------------------------------
{}
------------------------------------------
{ Card6:
   { indexContent: '3',
     indexDisplay: '1',
     color: '#e65d59',
     lang: 'FR' } }
------------------------------------------
// run with Card3, global in database containing Card6
------------------------------------------
{ Card6:
   { indexContent: '3',
     indexDisplay: '1',
     color: '#e65d59',
     lang: 'FR' } }
------------------------------------------
{ Card6:
   { indexContent: '3',
     indexDisplay: '1',
     color: '#e65d59',
     lang: 'FR' },
  Card3:
   { indexContent: '6',
     indexDisplay: '4',
     color: '#006e60',
     lang: 'FR' } }
------------------------------------------
// run with Card1, global in database containing ONLY Card6, Card3
// has not been saved.
------------------------------------------
{ Card6:
   { indexContent: '3',
     indexDisplay: '1',
     color: '#e65d59',
     lang: 'FR' } }
------------------------------------------
{ Card6:
   { indexContent: '3',
     indexDisplay: '1',
     color: '#e65d59',
     lang: 'FR' },
  Card1:
   { indexContent: '0',
     indexDisplay: '0',
     color: '#393a3d',
     lang: 'FR' } }
------------------------------------------

我希望整个对象都保存在数据库中。

任何帮助将不胜感激。

0 个答案:

没有答案