当前位置: 首页 > 知识库问答 >
问题:

如何向cloud firestore中的对象添加新属性[重复]

岳俊晖
2023-03-14

我想向云Firestore中已存在的对象添加新的属性

/*
After Update 1, my Expectation:
  MyObject = {
     'NewProperty1': 'newValue1'
  }
*/
db.collection('users').doc(id).update({
  MyObject: {'NewProperty1': 'newValue1'}
});


/*
After Update 2, my Expectation:
  MyObject = {
     'NewProperty1': 'newValue1',
     'NewProperty2': 'newValue2',
  }
*/
db.collection('users').doc(id).update({
  MyObject: {'NewProperty2': 'newValue2'}
});

/*
After Update 3, my Expectation:
  MyObject = {
     'NewProperty1': 'newValue1',
     'NewProperty2': 'newValue2',
     'NewProperty3': 'newValue3',
  }
*/
db.collection('users').doc(id).update({
  MyObject: {'NewProperty3': 'newValue3'}
});

如您所见,我只是向一个对象添加了新属性。

现在这段代码每次都用旧属性覆盖新属性。

共有2个答案

单琛
2023-03-14
use set method

    db.collection('users').doc(id).set({
     'NewProperty2': 'newValue2',
    });

>

  • 没有合并的设置将覆盖文档或创建它,如果它还不存在

    set with merge将更新文档中的字段,如果不存在,则创建该字段

    更新将更新字段,但如果文档不存在将失败

    create将创建文档,但如果文档已存在,则会失败

    请参见以下答案:https://stackoverflow.com/a/46600599/1680793

  • 江展
    2023-03-14

    下面的应该可以

    db.collection('users').doc(id).update({
      'MyObject.NewProperty1': 'newValue1'
    });
    

    查看文档了解更多详细信息。

    如果属性名称是动态的(请参阅下面的注释),您可以执行以下操作:

      var key = 'NewPropertyX';
      var value = 'propertyX';
    
    
      db.collection('users').doc(id).update({
        [`MyObject.${key}`]: value
      });
    
     类似资料:
    • 我想要得到一个这样的对象: 通过这样编码: 但我总是得到以下几点:

    • 问题内容: 这件事困扰了我一段时间。我为什么不能做: …虽然我可以执行以下操作? 这是什么规则?您能给我介绍一下吗? 问题答案: 您可以向具有的任何对象添加属性。 例如,没有它。 字符串和其他简单的内置对象也没有它。 使用类也没有它。 除非前面的声明适用,否则用定义的类都具有它。 如果使用/的对象没有/ ,通常是为了节省空间。例如,如果有一个命令,那就太过分了- 想象一下一个非常短的字符串的膨胀程

    • 我编码一个API与Node.js,MongoDB和快递。我似乎无法向我正在迭代的位置对象添加新属性。 我完全不理解我的代码的问题。是一个普通的对象,它应该可以工作。我说错了吗? 这是我在控制台中得到的输出。。。这太奇怪了。

    • 我想有条件地向对象添加一个属性。目前我有这个: 问题是如果汽车。电池不存在我有电池:未定义。如果对象中不存在该属性,我宁愿不要该属性。我怎样才能做到这一点?

    • 我正在尝试执行以下操作以满足代码构建器的要求(具体来说是Sencha Cmd)。 这是我需要做的本质。关键因素是函数体必须以返回对象文字结束。由于生成器中的限制,我无法返回变量。那么,如果参数includeB为true,如何在下面的伪代码点添加属性“b”,但如果为false,则根本不添加属性。不允许ie b==未定义或b==null。 也许这是不可能的。 感谢阅读和考虑, 默里

    • 问题内容: 嗨:在我们的应用程序中,我们已经从数据库中检索了一些数据,例如,表中包含以下字段:id,名称,年龄,地址,电子邮件。 然后,我们将根据客户提供一些这些属性。 如果客户需要ID,名称,我们将获得ID名称;如果客户需要ID,名称,年龄,则将获得ID,名称,年龄。 现在,我们想创建一个包装这些属性的类。但是,我们不知道确切要求哪个字段。 我可以在这里用Class替换地图吗? 问题答案: 如果