javascript 如何在云FireStore中为对象添加新属性[重复]

2j4z5cfb  于 2023-03-21  发布在  Java
关注(0)|答案(2)|浏览(90)

此问题在此处已有答案

(9个答案)
三年前关闭了。
我想将新的Property添加到Cloud Firestore中已存在的Object

/*
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'}
});

在这里,正如你所看到的,我只是给一个对象添加新的属性。
现在这段代码每次都用旧属性覆盖新属性。

qco9c6ql

qco9c6ql1#

以下内容应该可以解决这个问题

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

查看文档以获取更多详细信息。
如果属性名称是动态的(请参阅下面的注解),则可以执行以下操作:

var key = 'NewPropertyX';
  var value = 'propertyX';

  db.collection('users').doc(id).update({
    [`MyObject.${key}`]: value
  });
eyh26e7m

eyh26e7m2#

use set method

    db.collection('users').doc(id).set({
     'NewProperty2': 'newValue2',
    });
  • 设置而不合并将覆盖文档或创建尚不存在的文档
  • 设置为合并将更新文档中的字段,如果字段不存在,则创建字段
  • update将更新字段,但如果文档不存在,则会失败
  • create将创建文档,但如果文档已存在,则会失败

请看这个答案:https://stackoverflow.com/a/46600599/1680793

相关问题