仍在检索已删除的Firestore文档

时间:2018-02-22 11:12:30

标签: android firebase google-cloud-firestore

我已通过云功能触发器中的批量删除删除了一些文档。控制台将它们显示为已删除,但是,我的应用仍会检索文档!这必须是firestore的一个错误,这是一个非常重要的问题。我发现另一个用户遇到了同样的问题here

我使用的路径是/users/{id}/timeline/{postId}。我删除了一个特定的postId

2 个答案:

答案 0 :(得分:2)

可能你有问题,应用程序使用缓存并加载一些文档。您可以尝试的一件事是禁用离线持久性。

如果您使用的是Android with Real-Time Database,可以试试这个:

FirebaseDatabase.getInstance().setPersistenceEnabled(true);

iOS + Real-Time Database

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;
            });
        })
      );