You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Firebase Functions Shell中调用指定ID的Firestore删除函数?

如何在Firebase Functions Shell中测试Firestore onDelete函数并指定文档ID

要让你的myFunction中snapshot.id === 'foo',你需要在调用时传入一个模拟的DocumentSnapshot对象,明确设置id属性为'foo'——你之前尝试的{foo: ''}是把'foo'当成了文档内部的字段名,这和文档ID完全是两回事。

正确的调用方式

在Firebase Functions Shell中,直接构造包含id属性的对象作为第一个参数即可:

firebase> myFunction({ id: 'foo' })

如果你的逻辑后续需要用到路径参数doc-id(虽然当前代码里没用到),也可以传入第二个参数(EventContext)来保持参数完整,让测试场景更贴近真实触发逻辑:

firebase> myFunction({ id: 'foo' }, { params: { 'doc-id': 'foo' } })

为什么之前的尝试无效?

你传入的{foo: ''}是文档的数据内容,对应函数里snapshot.data()返回的对象;而snapshot.id是文档本身的ID,属于DocumentSnapshot对象的顶层属性,和文档内部字段没有关系。Functions Shell之所以生成随机ID,是因为你没指定这个id属性,它就会自动生成一个测试用的默认ID。

扩展:模拟完整的文档数据

如果你的函数后续需要读取文档内容,可以给模拟的快照对象加上data方法,来模拟真实的文档数据:

firebase> myFunction({ 
  id: 'foo', 
  data: () => ({ name: '测试文档', count: 99 }) 
})

这样在函数里调用snapshot.data()就能拿到你模拟的自定义数据了。

内容的提问来源于stack exchange,提问作者Minh Lam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 15:22:35