gpt4 book ai didi

javascript - parse.com 云代码防止重复错误

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:16:34 25 4
gpt4 key购买 nike

我正在按照此处的说明进行操作:

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");
}

});


}
});

我有一个profile表,唯一键是entityID,在插入的时候,我需要检查具有相同键的条目是否已经存在。

问题是,我无法再更新条目(似乎插入和更新请求都会触发此云代码。

我怎样才能修改它

  1. 当我插入时,如果它存在,我忽略它;如果不存在,则插入它。

  2. 当我更新时,如果它存在,更新它;如果不存在,我将忽略它。

最佳答案

我知道这有点老了,但应该提到的是,在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com