如何在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
相关产品推荐
相关产品推荐

