【发布时间】:2020-09-11 15:05:56
【问题描述】:
我正在尝试更新 Firestore 中的现有文档。该文件肯定存在。从客户端发送的数据包含文档本身的所有数据(每个字段和值以及由 firestore 自动生成的文档 ID)。
我已经尝试过传递给 Firebase 函数的每个数据值:data.id (auto-gen id)、data.email、data.name,以创建对要更新的文档的引用,但仍然得到错误响应。但是,每次函数触发时,.then 和 .catch 块都会被执行。
正如我之前所说,该文档存在于数据库中的“用户”集合中。如何从管理 SDK 中引用它?
这里是被调用的函数:
exports.createAssetMux = functions.https.onCall((data, context) => {
admin.firestore().collection('users').doc(data.id).update({
streamID: '98273498237'
}).then(
console.log('update success')
).catch(error => {
console.log('error message: ', error)
});
});
这是我在终端中收到的错误消息:
error message: Error: 5 NOT_FOUND: no entity to update: app: "dev~firebase-app"
path <
Element {
type: "users"
name: "kPuVNXsFFIyhs3Qad06B"
}
>
code: 5,
details: 'no entity to update: app: "firebase-app"\n' +
'path <\n' +
' Element {\n' +
' type: "users"\n' +
' name: "kPuVNXsFFIyhs3Qad06B"\n' +
' }\n' +
'>\n',
metadata: Metadata {
internalRepr: Map(1) { 'content-type' => [Array] },
options: {}
}
}
【问题讨论】:
-
我已经编辑了我的原始帖子以包含来自终端的错误消息。目前使用模拟器在本地运行。
-
看起来你有一些配置错误的东西“dev~live-from-868ea”看起来不像一个正确的应用程序 ID,我也不确定你是否编辑了错误代码,但 my-firestore 没有'看起来无效。您是否尝试编写具有相同功能的文档来验证您是否确实在访问您的数据库?我可以看到您还在不同的 cmets 上提出了一堆不同的问题,这不是使案例尽可能集中和简洁的好方法。请阅读How To ask 文档。
-
是的,我是在漫长的一天之后发帖的,目的是要编辑他们两个。我的错。无论如何,配置应用程序 ID 的正确方法是什么?还是在开发模式下始终是该应用程序ID?我很确定我需要摆脱 ~dev 部分,只是不知道怎么做。我尝试使用相同的函数编写,它会命中 .then() 块并以成功消息响应,但在 db 中没有创建任何内容。
-
好的,让我们分部分调试。总体概念是拥有一个写入 Firebase Firestore 数据库的云函数,对吗?您此时是否能够部署云功能并与您的数据库进行交互?即关注quickstart
-
我能够部署该功能。它以 200 状态执行,但数据库中没有任何更新。但是,是的,这是正确的,这就是我要在这里提出的总体概念。谢谢!非常感谢您的帮助。
标签: javascript firebase google-cloud-firestore google-cloud-functions firebase-admin