当我在firebase云函数中的node.js中这样做时:
var my_map = new Map();
my_map.set('name','foo');
my_map.set('description','helloworld');
//update the firestore document
let updateDocument = documentRef.update({
some_field: my_map
});
我在日志中得到以下错误:
查询事件失败错误:Update((需要一个JavaScript对象或一个字段/值对的交替列表,后面可以跟一个可选的前置条件。参数"dataOrField"的值不是有效的Firestore文档。输入不是一个普通的JavaScript对象(位于字段"some_field"中(。
我已在此处查看了文档https://firebase.google.com/docs/firestore/manage-data/add-data但给出的唯一与映射相关的示例似乎是处理更新嵌套字段。我想创建一张地图,并轻松地将消防仓库文档中的字段设置为该地图的内容。
我是node.js和firestore的新手。提前感谢您的协助。
节点的Firestore SDK不支持ES6-Map对象。您需要使用一个普通的JavaScript对象来构建Firestore映射类型字段。
const o = {
name: 'foo',
description 'helloworld'
}
documentRef.update({
some_field: o
});
正如Doug Steven所说,它不支持map,您可以通过以下方式将map转换为纯JS对象:
const updateObj = Object.fromEntries(yourMap);
然后将其传递给更新
documentRef.update(updateObj);