【发布时间】:2019-12-30 22:03:44
【问题描述】:
我在玩 Firebase Cloud Functions 和 Cloud Firestore(NodeJS + TypeScript 在上面)。
我创建了两个集合:apps 和 devices。我还有 2 个功能:我的一个功能是从 apps 集合中删除一个应用程序(通过 HTTPS 请求),另一个功能是对该应用程序被删除做出反应。第二个函数的工作是删除与已删除应用关联的所有设备(每个设备都有一个“appId”属性)。
我不会发布 HTTPS 的,因为我可以验证它是否可以正常工作。 我将只发布 Firestore 数据删除的反应:
export const onAppDeleted = functions.firestore
.document("apps/{appId}")
.onDelete((document, context) => {
const appId = context.params.appId;
return admin.firestore().collection(COL_DEVICES).where('appId', '==', appId).get()
.then((results) => {
const batch = admin.firestore().batch();
results.forEach((record) => {
batch.delete(record.ref)
});
return batch.commit();
});
});
问题:这种方法会删除整个 devices 集合
预期:仅删除与已删除应用匹配的设备,而不是整个集合
注意事项:
(1) 这可能会发生,因为我在 devices 集合中只有这一个设备,但仍然...我想保留该集合(是吗?)
(2) 我在 Firestore 和 Cloud Functions 方面的经验几乎为零,所以如果我的方法有误,请纠正我
【问题讨论】:
标签: javascript firebase google-cloud-firestore google-cloud-functions