首页 > 解决方案 > Amplify.DataStore.query 正在返回由所有用户创建的数据,而不仅仅是所有者

问题描述

当我运行查询时,我会从所有用户(所有者)那里获取数据,而不仅仅是当前登录的所有者。我想如果我有这个:[创建、更新、删除、读取] 只有所有者才能读取他们的数据?这里发生了什么?我错过了什么?

我使用相同的设备(模拟器),并且使用不同的帐户登录和注销。

Amplify.DataStore.query(Todo.class,
        all -> {
            while (all.hasNext()) {
                Todo todo1 = all.next();
                Log.i("tag", "Title: " + todo1.getName());
            }
        },
        failure -> Log.e("tag", "Query failed.", failure)
);


type Todo
@model
@auth(
  rules: [
    {
      allow: owner,
      ownerField: "owner",
      operations: [create, update, delete, read]
    }
  ]
) {
  id: ID!
  owner: String
  name: String!
}

标签: androidaws-amplify

解决方案


我想我在这里找到了解决方案:

https://docs.amplify.aws/lib/datastore/sync/q/platform/android#update-and-delete-with-predicate

每次在同一设备上切换用户时,都必须调用 Amplify.DataStore.clear()

注意:如果多个用户共享同一设备并且您的架构定义了用户特定的数据,请确保在切换用户时调用 Amplify.DataStore.clear()。访问 Auth events 了解所有与身份验证相关的事件。


推荐阅读