我引用示例here来过滤掉重复的事件。我看到事件id包含=和/字符。事件ID base64是否编码?如果在id中发现斜杠/,则文档路径有时会成为嵌套集合,这会产生问题。但令我惊讶的是,我无法对它们进行Base64解码。例如,我可以跟踪的- 2 id是-LJ79W2cT0inTJbzFEHH/Aw3i10M=和IQUaGYPQpdYZw3mT3dHRca/Q7tU=。
=
/
LJ79W2cT0inTJbzFEHH/Aw3i10M=
IQUaGYPQpdYZw3mT3dHRca/Q7tU=
3mpgtkmj1#
我不认为Cloud Functions中有任何关于事件ID的定义。您应该将它们视为不透明字符串,并且不要对它们的内容或其内容的含义做出任何假设,如果您多次获得相同的事件ID,则它们表示相同的事件。
bxjv4tth2#
不能直接使用触发器的EventId作为文档ID,因为它可以包含正斜杠。您应该首先删除斜线:
exports.onGoodsUpdate = functions .database .ref("goods/{id}") .onUpdate((change, context) => { const data = change.after.val() as Goods const repository = new GoodsReportRepository() const report: GoodsReport = { id: context.eventId.replace("/", ""), groupCode: data.code, } return repository.save(report) })
2条答案
按热度按时间3mpgtkmj1#
我不认为Cloud Functions中有任何关于事件ID的定义。您应该将它们视为不透明字符串,并且不要对它们的内容或其内容的含义做出任何假设,如果您多次获得相同的事件ID,则它们表示相同的事件。
bxjv4tth2#
不能直接使用触发器的EventId作为文档ID,因为它可以包含正斜杠。
您应该首先删除斜线: