是否可以从firebase云函数node.js更新firestore中的map类型字段?

Posted

技术标签:

【中文标题】是否可以从firebase云函数node.js更新firestore中的map类型字段?【英文标题】:Is it possible to update a field of type map in firestore from firebase cloud functions node.js? 【发布时间】:2020-06-03 06:03:21 【问题描述】:

当我在我的 node.js 中的 firebase 云函数中执行此操作时:

 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 此处的文档,但给出的唯一与地图相关的示例似乎涉及更新嵌套字段。我想创建一个地图并轻松地将 Firestore 文档中的一个字段设置为该地图的内容。

我是 node.js 和 firestore 的新手。提前感谢您的帮助。

【问题讨论】:

【参考方案1】:

Firestore SDK for node 不支持 ES6 Map 对象。您需要使用普通的 JavaScript 对象来构建 Firestore 地图类型字段。

const o = 
    name: 'foo',
    description 'helloworld'


documentRef.update(
    some_field: o
);

【讨论】:

【参考方案2】:

正如 Doug Steven 所说,它不支持地图,您可以通过以下方式将地图转换为纯 JS 对象:

const updateObj = Object.fromEntries(yourMap);

然后将其传递给更新

documentRef.update(updateObj);

【讨论】:

以上是关于是否可以从firebase云函数node.js更新firestore中的map类型字段?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 firebase 云功能访问 bigquery 数据?

Angular 和 Firebase 云函数返回 null

设置 Firebase 本地模拟器云功能环境配置值

我无法从我的 node.js firebase 函数 index.js 文件中验证大查询

无法使用 Node.js 在 Firebase 云存储中保存 CustomMetadata

将 Runtime 更改为 Node.js 10 后云功能失败