Firestore:更新嵌套对象中的字段

时间:2018-09-07 23:53:55

标签: javascript firebase google-cloud-firestore

如何更新文档嵌套对象中的字段?文档中显示了点符号,但是如何使用变量作为对象名称来实现更新?

结构类似于:collection("fruits").doc("as867f56asd")

name: "banana"
abc-variable: 
    description:"blah"
    qty: 1

我要更新文档as867f56asd的{​​{1}} = 2

我的JavaScript要求对象名称使用变量。

我不知道更新的括号符号。是否需要abc-variable.qty

这是到目前为止我尝试过的代码(粗糙粘贴):

.set{merge:true}

1 个答案:

答案 0 :(得分:4)

如果您要更新,请执行以下操作:

let qty = 2
orderRef.update({"abc-variable.qty": qty});

但是如果abc-variable是变量的值,则可以:

let qty = 2
let variable = "abc-variable";
var values = {};
values[variable] = qty;
orderRef.update(values);

更新

此代码仅更新收藏夹:

var variableObjectName = "favorites";
var qty = Date.now(); // just so it changes every time we run
var field = {quantity:qty};
var obj = {};
obj[variableObjectName] = field; 
ref.update(obj);

它不会删除文档上的任何其他属性。

更新2

要更新嵌套对象中的单个字段,请使用.来寻址该字段:

ref.update({ "favorites.quantity": Date.now() });

请参见documentation on how to update fields in nested objects

更新3

要对名称存储在变量中的字段执行深度更新:

var name = "favorites";
var update = {};
update[name+".quantity"] = Date.now();
ref.update(update);

再次显示在https://jsbin.com/wileqo/edit?js,console