gpt4 book ai didi

javascript - 解析云之前保存更新类

转载 作者:行者123 更新时间:2023-12-03 10:43:52 25 4
gpt4 key购买 nike

我在 Parse 上有一个名为 Profiles 的类,其中包含一个 bool 列 isDefault

基本上我想要实现的是,如果在Profiles上调用保存,我想在保存之前检查添加/更新的对象,如果它是isDefault为 true,然后将 Profiles 中的所有其他行更改为 false,然后保存新的或更新的对象。

对于这种情况,我使用了 beforeSave,一切都在 beforeSave 中工作,只是它不运行更新所有配置文件数据的查询,这是我使用的代码:

Parse.Cloud.beforeSave("Profiles", function(request, response) {


if (request.object.get("imageUrl") == null || request.object.get("imageUrl") == "") {
request.object.set("imageUrl", "http://www.imran.com/xyper_images/icon-user-default.png");
}

if (!request.object.get("isDefault")) {
request.object.set("isDefault", false);
}else{
var query = new Parse.Query("Profiles");
query.equalTo("user", request.object.get("user"));
query.find().then(function(results) {
for (var i = 0; i < results.length; i++) {
var pro = results[i];
pro.set("isDefault", false);
pro.save();
}
}
);
}
response.success();
});

最佳答案

请注意,在 Javascript SDK 中,save() 是一个异步方法,它返回一个 Promise ( https://parse.com/docs/js/symbols/Parse.Object.html#save )。

在您的代码中,response.success() 可能会在所有对象上完成 save() 操作之前返回。

并行 promise

我将通过使用并行 promise 来解决这个问题(您也可以尝试使用串行 promise 或使用 saveAll 方法的方法):

var query = new Parse.Query("Profiles");
query.equalTo("user", request.object.get("user"));
query.find().then(function(results) {

var promises = [];

for (var i = 0; i < results.length; i++) {
var pro = results[i];
pro.set("isDefault", false);
promises.push(pro.save());
}

return Parse.Promise.when(promises);
}).then(function(result) {
response.success();
},function(error){
response.error();
});

全部保存

这是使用 saveAll 方法的解决方案。根据 Parse JS 文档,saveAll() 不返回 promise 。所以这里的语法变得有点困惑(我不喜欢像我在这里所做的那样混合 promise ,但我不想太多修改你的原始代码)。

var query = new Parse.Query("Profiles");
query.equalTo("user", request.object.get("user"));
query.find().then(function(results) {

for (var i = 0; i < results.length; i++) {
var pro = results[i];
pro.set("isDefault", false);
}

Parse.Object.saveAll(results, {
success: function(list) {
response.success();
},
error: function(error) {
response.error();
}
});

}, function(error){
response.error();
});

关于javascript - 解析云之前保存更新类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28645162/

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