gpt4 book ai didi

javascript - 解析cloudcode beforeSave 获取预更新对象

转载 作者:数据小太阳 更新时间:2023-10-29 03:58:19 25 4
gpt4 key购买 nike

beforeSave Hook 中,我想在更新之前获取对象的状态。在这种特殊情况下,它是为了阻止用户在做出选择后更改他们的选择。伪代码看起来像:

If (user has already voted) {
deny;
} else {
accept;
}

我目前的代码是:

Parse.Cloud.beforeSave('votes', function(request, response) {
if (!request.object.isNew()) {
// This is an update. See if the user already voted
if (request.object.get('choice') !== null) {
response.error('Not allowed to change your choice once submitted');
}
}
response.success();
}

但是 request.object 是已经应用了更新的对象的状态。

请注意,'votes' 对象是单独创建的,因此不允许插入但不允许更新是不够的;我需要知道给定字段是否已在数据库中设置。

最佳答案

虽然 Krodmannix 的响应是正确的(并且对我很有帮助),但它具有完整查询的开销。如果你在 beforeSave 中做事,你真的很想精简它们。因此,我认为 fetch 命令更可取。

Parse.Cloud.beforeSave('votes', function(request, response) {
if (!request.object.isNew()) {
var Votes = Parse.Object.extend("votes");
var oldVote = new Votes();
oldVote.set("objectId",request.object.id);
oldVote.fetch({
success: function(oldVote) {
if (oldVote('choice') !== null) {
response.error('Not allowed to change your choice once submitted');
}
else {
response.success(); // Only after we check for error do we call success
}
},
error: function(oldVote, error) {
response.error(error.message);
}
});
});

关于javascript - 解析cloudcode beforeSave 获取预更新对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25082262/

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