我有两个用户访问同一个对象。如果userA在没有首先获取对象的情况下保存以刷新其版本,则userB已成功保存的数据将被覆盖。是否有任何方法(可能是云代码?)来访问和更新PFObject的一个且只有一个数据值?
我正在考虑将保存推送到云端,一旦到达那里就刷新对象,更新云中的值,然后将其保存回来。然而,这是一种痛苦,但仍然没有它的缺点。
答案 0 :(得分:0)
这看起来很容易,但对我来说比应该更难。直观地说,您应该能够在beforeSave
中过滤掉您不想要的字段。实际上,这是Parse.com上几个帖子中给出的建议。根据我的经验,它实际上会将过滤视为删除。
我的目标有点不同 - 我试图过滤掉一些字段,不仅保存了一些字段,而且转换到您的上下文,您可以尝试查询现有的匹配记录,并覆盖新对象。你不能通过response.failure()中止,我不知道如果你立即用感兴趣的字段保存现有记录并将request.object属性清零会发生什么 - 你可以自己试验一下:
Parse.Cloud.beforeSave("Foo", function(request, response) {
// check for master key if client is not end user etc (and option you may not need)
if (!request.master) {
var query = new Parse.Query("Foo");
query.get(request.object.id).then(function(existing) {
exiting.set("some_field", request.object.get("some_field"));
request.object = exiting; // haven't tried this, otherwise, set all fields from existing to new
response.success();
}, function(error) {
response.success();
});
}
});