现在有表 “TABLE” 表中分别有 ObjectId、Status、Type 三个字段
我的代码是这样的:
try {
AVObject object = new AVObject("TABLE");
object.put("Status", -1);
object.put("Type ", 5);
AVSaveOption option = new AVSaveOption();
AVQuery<AVObject> query = new AVQuery<>("TABLE");
query.whereEqualTo("ObjectId", "aaaaaaa");
option.query(query);
object.save(option);
} catch (Exception e) {
e.printStackTrace();
}
官方文档在“保存选项” 保存选项 一节中这样说:
当 query 中的条件满足后,对象才能被更新,否则系统会放弃更新,并返回错误码 305。
通过 query 指定的条件仅对已存在的对象生效,如果用于保存新对象,则不生效。
按照官方文档中的说法应该是更新 ObjectId 为 aaaaaaa 条目才对啊,但是执行上面的代码却是直接插入一条新的
是我的代码哪里有问题吗?
版本是:Android avoscloud-sdk:v4.6.4
======================更新==================================
这样写是成功的:
AVQuery<AVObject> query = new AVQuery<>("TABLE");
query.whereEqualTo("ObjectId", "aaaaaa");
AVObject object = query.getFirst();
object.put("EventStatus", 123321);
object.put("EventType", 1234567);
AVSaveOption option = new AVSaveOption();
option.query(query);
option.setFetchWhenSave(true);
object.save(option);
直接 new AVObject 是不行的,需要根据条件先查询出那个 AVObject 才可以设置更新内容,再保存
更新一下万一有其他兄弟也遇到我这种情况