当前位置: 首页 > 知识库问答 >
问题:

云函数从firestore路径获取列表

凌嘉志
2023-03-14

我的目标是用子集合test2下的[0]th+[1]th+[2]the document的值更新数据更新的test1ID文档。

但是使用下面的代码,我得到了未定义的test2文档列表(currentTest2DocumentList)。

(错误消息=>TypeError:无法读取未定义的属性“0”)

我怎样才能获得有效的子托收文件列表?

const functions = require('firebase-functions');
const admin = require('firebase-admin');

admin.initializeApp();

exports.onItemDocumentUpdate = functions.firestore.document('test1/{test1ID}')
.onUpdate(async (change, context) => {

const currentTest1ID = context.params.test1ID


const currentTest2DocumentList = await 
admin.firestore().collection('test1').doc(currentTest1ID).collection('test2').get()
.then(function(docs) {return docs.forEach(function (doc){doc.data()})})

const addedValue = currentTest2DocumentList[0].field1 + currentTest2DocumentList[1].field1 + 
currentTest2DocumentList[2].field1

return admin.firestore().collection('test1').doc(currentTest1ID).update({testField: 
addedValue});

共有1个答案

宫晟
2023-03-14

您似乎没有正确使用forEach。试试这个:

const currentTest2DocumentList = await
admin.firestore().collection('test1').doc(currentTest1ID).collection('test2').get()
.then(function(docs) {
  let res = []
  docs.forEach(doc => res.push(doc.data()));
  return res;
})

甚至更好:

const currentTest2DocumentList = await
admin.firestore().collection('test1').doc(currentTest1ID).collection('test2').get()
.then(docs => docs.map(doc => doc.data()));

Test2集合中是否有超过3个文档?因为那样的话,把它们都读一遍似乎是一种浪费。您可以添加限制(3)来解决此问题

const currentTest2DocumentList = await
admin.firestore().collection('test1').doc(currentTest1ID).collection('test2').limit(3).get()
.then(docs => docs.map(doc => doc.data()));
 类似资料:
  • 我试图在云函数中获得通过firebase web sdk验证的用户的UID。cloud函数由cloud FireStore的事件触发。 当登录用户正在创建/更新CAFE中的项目时,会触发此功能。身份验证由处理。安全规则仅对登录的用户启用写操作。因此该事件可以绑定到用户。 文档中有处理的示例,但在所有这些情况下,userId都是文档路径的一部分。但是在这个模型中,用户不是路径的一部分,因为一个咖啡馆

  • 函数名称:获取 SD 卡路径 函数功能:获取 SD 卡路径 函数方法 path = file.getSDCardPath() 返回值 类型 说明 path string SD 卡路径 函数用例 path = file.getSDCardPath() dialog(path,5000) 注意事项 目前积木编程函数和触动精灵函数不通用,请仔细查看本手册,此手册中函数仅支持积木编程,不支持触动精灵,同

  • 问题内容: 我正在编写一个脚本,以自动将一个文件中的特定文本集更改为另一个文件中具有不同名称的特定集。 我想使用该函数获取文件名,但是当我尝试打印文件名时,它返回: 我只需要文件名,因为不能写脚本。 有什么建议删除多余的位吗? 问题答案: 返回所选文件的路径;如果未选择文件,则返回空字符串: 要打开通过选择的文件,您可以简单地使用常规的Python构造和函数,例如 函数: 我认为您正在使用,它将打

  • 问题内容: 我正在使用Go开发REST API,但是我不知道如何执行路径映射并从中检索路径参数。 我想要这样的东西: 如果可能的话,我想只使用包而不是Web框架。 谢谢。 问题答案: 如果您不想使用任何可用的路由包,则需要自己解析路径: 将/ provisions路径路由到您的处理程序 然后根据需要在处理程序中拆分路径

  • 我需要从firestore中的以下数据结构中获取formName和id的数据。在这种情况下,如何获取数据,比如创建嵌套对象?