如何从云函数动态地在 Cloud Firestore 中创建集合

Posted

技术标签:

【中文标题】如何从云函数动态地在 Cloud Firestore 中创建集合【英文标题】:How to create collections in cloud firestore dynamically from cloud functions 【发布时间】:2018-11-24 23:19:00 【问题描述】:

我正在尝试从云功能动态地为集合内的文档创建集合和子集合, 但我得到以下异常 **

参数“collectionPath”必须指向一个集合,但是 “数据/c2f7c4e84366”。您的路径不包含奇数个 组件

**

日志 -

错误:参数“documentPath”必须指向一个文档,但是是“exports/user343434_inbox/profile”。您的路径不包含偶数个组件。 在 Firestore.doc (/user_code/node_modules/firebase-admin/node_modules/@google-cloud/firestore/src/index.js:282:13) 在 admin.firestore.doc.set.then.ws (/user_code/lib/index.js:28:53)

代码sn-p: const p = admin.firestore().doc(exports/$userInboxCollectionName/profile).set(reqData, merge: false ) *

如果不存在,我希望云函数在导出集合(已存在)中动态创建子集合(userid_inbox)并添加配置文件。

【问题讨论】:

请编辑您的问题以显示产生此错误的代码。 【参考方案1】:

Firestore 的工作方式如下:collection / document / subCollection / "subDocument" / 等等。

你应该试试:(我正在使用 TS

let p = admin.firestore().collection(`exports/$userUID/$theSubcollection`)
    .add( message: messageString )
    .then(ref => 
        console.log('Added document with ID: ', ref.id)
);

//let's see the estructure here:
//collection.......exports   
//document.........$userUID
//subcollection....$theSubcollection
//document.........ref.id
//data.............message with value messageString

使用此代码,您正在创建一个新文档,其中包含新子集合上的值消息。

【讨论】:

以上是关于如何从云函数动态地在 Cloud Firestore 中创建集合的主要内容,如果未能解决你的问题,请参考以下文章

云函数可以从云存储中读取吗?

从云代码函数返回基于 objectId 的 Parse.User 对象列表

从 Cloud Function (python) 写入 Google Cloud Storage

如何从云函数内部运行查询?

如何从 google-cloud-platform vminstance 中的 pubsub 回调函数调用全局变量?

从云配置服务器配置 spring.* 启动属性