android - 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!
}
解决方案
我想我在这里找到了解决方案:
https://docs.amplify.aws/lib/datastore/sync/q/platform/android#update-and-delete-with-predicate
每次在同一设备上切换用户时,都必须调用 Amplify.DataStore.clear()
注意:如果多个用户共享同一设备并且您的架构定义了用户特定的数据,请确保在切换用户时调用 Amplify.DataStore.clear()。访问 Auth events 了解所有与身份验证相关的事件。
推荐阅读
- java - 当应该为真时,Android Studio 改造响应返回布尔值为假
- android - How I can download the animated gif / animated overlay from Mobile (Android /iOS ) native app to my project location?
- python - 替换 read_csv 中的解码错误
- performance-testing - 如何在 Gatling 中保存和使用 cookie 的价值?
- ui-automation - 任何人如何解决此警告 - 使用空手道框架进行 UI 自动化
- cmake - 禁用 CMake 弃用警告
- arrays - 谷歌应用程序脚本中的数组比较
- node.js - 无论如何都可以将 react-scripts 安装为全局
- javonet - 尝试迭代类型时发生反射类型加载异常
- google-cloud-platform - 从 Salesforce 通过 http 调用 Istio VirtualService