如何向云 Firestore 中的对象添加新属性 [重复]
Posted
技术标签:
【中文标题】如何向云 Firestore 中的对象添加新属性 [重复]【英文标题】:How to add new property to an object in cloud firestore [duplicate] 【发布时间】:2020-05-05 02:26:11 【问题描述】:我想将新的Property
添加到Object
中已存在的Cloud 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'
);
如您所见,我只是将新属性添加到一个对象。
现在这段代码每次都用旧属性覆盖新属性。
【问题讨论】:
【参考方案1】:以下应该可以解决问题
db.collection('users').doc(id).update(
'MyObject.NewProperty1': 'newValue1'
);
联系doc了解更多详情。
如果属性名称是动态的(请参阅下面的 cmets),您可以执行以下操作:
var key = 'NewPropertyX';
var value = 'propertyX';
db.collection('users').doc(id).update(
[`MyObject.$key`]: value
);
【讨论】:
谢谢,但该属性是动态的,例如在每次更新中都有随机 id,我使用该 id 作为具有 true 或 false 值的属性。 动态的具体部分是什么? MyObject 还是 NewProperty1? MyObject 一直存在,是一个Object,可以有很多属性,如NewProperty1、NewProperty2、NewProperty3、NewPropertyX。那么如何将新的 property1、property2 和 propertyX ... 添加到 MyObject 中,这是我的users
集合和 user
doc 的字段。
查看更新。
很高兴能帮到你!您将在doc 中找到有关 Firestore 限制的更多详细信息。在您的情况下,我认为以下可能适用:字段值的最大大小:1 MiB - 89 字节(1,048,487 字节);地图或数组中的最大景深:20【参考方案2】:
use set method
db.collection('users').doc(id).set(
'NewProperty2': 'newValue2',
);
设置不合并将覆盖文档或创建它 还不存在
设置合并将更新文档中的字段或创建它,如果它 不存在
update 将更新字段,但如果文档不存在则会失败
create 将创建文档,但如果文档已经创建则失败 存在
看到这个答案:https://***.com/a/46600599/1680793
【讨论】:
set()
函数覆盖,而且我只需要在MyObject
中添加。以上是关于如何向云 Firestore 中的对象添加新属性 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何通过敲除映射(ko.utils)向数组中的每个对象添加新属性(索引)?