1 回答
- 最新
- 投票最多
- 评论最多
0
【以下的回答经过翻译处理】 感谢您就以上查询与我们联系。我想分享一下,为了执行更新/删除操作,必须需要现有记录的主键才能使变更成功。
例如,考虑以下示例模式,其中"id"将被用作主键:
type Todo @model {
id: ID!
name: String!
description: String
}
现在,在我的测试设置中,我以两种方式执行并测试了更新变更:
1.在同一函数中创建和更新变更:
//Creating a record
Todo todo = Todo(name: 'my first todo', description: 'todo description');
final request = ModelMutations.create(todo);
final response = await Amplify.API.mutate(request: request).response;
Todo? createdTodo = response.data;
//Updating a record using the returned response for .create()
final todoWithNewName = createdTodo.copyWith(name: 'new todo');
final request1 = ModelMutations.update(todoWithNewName);
final response1 = await Amplify.API.mutate(request: request1).response;
Todo? updatedTodo = response1.data;
2.在单独的函数中进行更新变更
//At first, fetching the existing record with id
final request = ModelQueries.get(Todo.classType,"<passing_record_id>");
final response = await Amplify.API.query(request: request).response;
Todo? createdTodo = response.data;
//then, updating the fetched record
final todoWithNewName = createdTodo.copyWith(name: 'updated todo');
final request1 = ModelMutations.update(todoWithNewName);
final response1 = await Amplify.API.mutate(request: request1).response;
Todo? updatedTodo = response1.data;
在两个情况下发出请求时,我能够观察到更新变更是按预期执行的。但是,当使用不正确的记录发出请求(即id值错误或没有id)时,我发现响应返回null。请注意,上述代码仅供参考。
另外,请注意 AWS API 插件不支持冲突检测。如果 AppSync 返回有关缺少 _version 和 _lastChangedAt 字段的错误,或者有关未处理冲突的错误,那么我们将不得不在我们的 API 中禁用冲突检测。
请参考以下链接,这些链接可能对解决此问题有帮助:
https://docs.amplify.aws/lib/graphqlapi/getting-started/q/platform/flutter/#configure-api https://docs.amplify.aws/lib/graphqlapi/mutate-data/q/platform/flutter/ https://docs.amplify.aws/lib/graphqlapi/query-data/q/platform/flutter/ GitHub 问题讨论:https://github.com/aws-amplify/amplify-flutter/issues/1434 如果您面临进一步的挑战,请随时使用以下链接向 AWS 开启支持案例。
相关内容
- AWS 官方已更新 6 个月前
- AWS 官方已更新 5 个月前
- AWS 官方已更新 2 年前
- AWS 官方已更新 6 个月前