我已通过云功能触发器中的批量删除删除了一些文档。控制台将它们显示为已删除,但是,我的应用仍会检索文档!这必须是firestore的一个错误,这是一个非常重要的问题。我发现另一个用户遇到了同样的问题here
我使用的路径是/users/{id}/timeline/{postId}
。我删除了一个特定的postId
。
答案 0 :(得分:2)
可能你有问题,应用程序使用缓存并加载一些文档。您可以尝试的一件事是禁用离线持久性。
如果您使用的是Android with Real-Time Database,可以试试这个:
FirebaseDatabase.getInstance().setPersistenceEnabled(true);
Database.database().isPersistenceEnabled = true
如果您正在使用FireStore,请使用以下内容:
机器人:
FirebaseFirestoreSettings settings = new FirebaseFirestoreSettings.Builder()
.setPersistenceEnabled(false)
.build();
db.setFirestoreSettings(settings);
的iOS:
let settings = FirestoreSettings()
settings.isPersistenceEnabled = false
// Any additional options
// ...
// Enable offline data persistence
let db = Firestore.firestore()
db.settings = settings
答案 1 :(得分:0)
删除后,文档仍可获取一段时间。它们的存在状态依赖于DocumentSnapshot属性-“存在”,可以使用docs和collection的snapshotChanges()方法在管道中读取和过滤它们。请参见下面的示例:
...
.snapshotChanges()
.pipe(
map((actions: DocumentChangeAction<T>[]) => {
return actions
.filter((a: DocumentChangeAction<T>) => a.payload.doc.exists)
.map((a: DocumentChangeAction<T>) => {
const data: T = {...a.payload.doc.data() as {}} as T;
data['id'] = a.payload.doc.id;
return data;
});
})
);