firebase 参数“documentPath”的值不是有效的资源路径,路径必须为非空字符串

czq61nw1  于 2023-11-21  发布在  其他
关注(0)|答案(5)|浏览(152)

我想写一个cloud函数,监听是否在users的某个文档的following子集合中创建了一个新文档。但是,以前创建的用户文档可能没有following子集合。
换句话说,我想要一个响应db.collection(“users”).doc(“doc_id1”).collection(“following”).doc(“doc_id2”).set(new_document)的云,我已经将云函数编写为

exports.create_friend_request_onCreate = functions.firestore
  .document("users/{user_id}/{following}/{following_id}")
  .onCreate(f2);

字符串
f2的实现则写在其他文件中

exports.f2 = async function(snapshot) {
 //some code
}


但是,在子集合中创建文档时,我得到以下错误
Error: Value for argument "documentPath" is not a valid resource path. Path must be a non-empty string.
有谁能给我解释一下这里出了什么问题吗?

inkz8wg9

inkz8wg91#

我有一个同样的问题,这个问题的原因是文件路径必须是一个字符串。collection("questions").doc(21)是错误的。collection("questions").doc("21")是工作。

  • 你必须确保变量是字符串。你可以使用"users/{String(user_id)}/{following}/{String(following_id)}"
bq3bfh9z

bq3bfh9z2#

正确的路径应该是'users/{user_id}/following/{following_id}',显然双引号不能用作路径。

vsikbqxv

vsikbqxv3#

更改此:

.document("users/{user_id}/{following}/{following_id}")

字符串
变成这样:

.document("users/{user_id}/following/{following_id}")


collection不应该有{wildcard}

ftf50wuq

ftf50wuq4#

你需要把它们作为字符串。最简单的方法是格式化字符串。
用法:${your_any_type_value}
注意:undefinednull将显示为“null”和“undefined”。

exports.create_friend_request_onCreate = functions.firestore
  .document(`users/${user_id}/${following}/${following_id}`)
  .onCreate(f2);

字符串

w51jfk4q

w51jfk4q5#

这发生在我身上,因为在我的控制器(API)中,我有这样的东西。

export const deleteUserGallery = async (req: Request, res: Response) => {
    const { user_id } = req.params

字符串
如果是这样的话,你需要将req.params改为req.body,如下所示:

export const deleteUserGallery = async (req: Request, res: Response) => {
        const { user_id } = req.body

相关问题