我在这里按照说明进行操作:
https://parse.com/questions/unique-fields--2
var Profile = Parse.Object.extend("Profile");
Parse.Cloud.beforeSave("Profile", function(request, response) {
if (!request.object.get("entityID")) {
response.error('must have a entity id');
} else {
var query = new Parse.Query(Profile);
query.equalTo("entityID", request.object.get("entityID"));
query.first({
success:function(object) {
if (object) {
response.error("already exist");
}
else {
response.success();
}
},
error:function(error) {
response.error("couldnt validate uniqueness for this profile");
}
});
}
});
我有一个配置文件表,唯一键是entityID,插入时,我需要检查是否存在具有相同键的条目。
问题是,我无法再更新条目(似乎插入和更新请求都触发了此云代码。
我该如何修改它
当我插入
最佳答案
我知道这有点陈旧,但是应该指出的是,在Parse实现锁/等待系统或任意约束实现之前,不可能完全防止使用云代码重复条目,因为不能保证只有一个实例代码在任何给定的点运行。即使您有这样的事情:
if entry exists
update it or don't add it
else
add it
由于没有锁定,因此无法实现自己的约束实现。此外,尝试这样做将使您的API调用加倍,并可能使您陷入更昂贵的计划。即使在最近的几个月中,Parse的工作人员也多次承认这一点(只是在论坛上搜索),并建议在某些情况下使用原子增量或自动生成的唯一对象ID,但是在大多数情况下,这是不切实际的。他们还建议运行自 Action 业以在输入后删除重复项,但这并不能保证即使在作业运行后,系统中的任何给定点在内部也是一致的。
底线是,如果约束强制执行和整体数据完整性对于您的应用程序至关重要,则Parse尚未成熟到可以满足您的需求。我希望很快能看到这种变化。
关于javascript - parse.com云代码可防止重复错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22892466/