只要在Firestore中某个特定集合的任何文档中有更改(创建,修改,删除),我都想捕获增量并将其发布到pubsub。
我正在python中尝试所有这一切。
代码段:
ref = db.collection('country').document(city_id)
ref.update(body_json)
ref.on_snapshot(callback)
def callback(col_snapshot, changes, read_time):
for change in changes:
if change.type.name == 'ADDED':
print('ADDED')
elif change.type.name == 'MODIFIED':
print('MODIFIED')
elif change.type.name == 'REMOVED':
print('REMOVED')
print('end of callback')
现在,当我在Firestore文档中进行更改时,例如:
我无法理解这种行为,也不知道如何处理无法执行的打印操作。
答案 0 :(得分:0)
限制是仅Node.js,因此仅Javascript。我认为它仍然适用并且值得您研究,因此尽管您的问题基于Python,但在这里共享它是最佳选择。
我认为Cloud Functions在这里对您非常有用。您可以设置触发器,以在您提到的每件事上运行功能。
添加可以通过onCreate处理。 修改后可以通过onUpdate处理。 已删除-通过onDelete。
您基本上会设置如下所示的函数:
exports.updateUser = functions.firestore
.document('users/{userId}')
.onUpdate((change, context) => {
// Get an object representing the document
// e.g. {'name': 'Marie', 'age': 66}
const newValue = change.after.data();
// ...or the previous value before this update
const previousValue = change.before.data();
// access a particular field as you would any JS property
const name = newValue.name;
// perform desired operations ...
});
对于上面的示例,您将获得文档的前后状态,因此您不仅可以知道它已更改,还可以知道更改了什么。
示例代码直接来自Cloud Functions here的文档。