gpt4 book ai didi

javascript - Parse Javascript Cloud Code .save() 仅适用于单个用户

转载 作者:行者123 更新时间:2023-11-30 12:31:57 26 4
gpt4 key购买 nike

我在 iOS 中使用 Parse 来运行一个云代码方法,该方法在其请求中获取一个 ID 并在响应中接收一个数字。

云代码功能的目的是获取请求 ID 并将其添加到 3 个不同用户的字段。

这是Javascript中的云代码方法:

amount = 3;
// Use Parse.Cloud.define to define as many cloud functions as you want.
// For example:
Parse.Cloud.define("addToIDs", function(request, response) {

var value = request.params.itemId;

var query = new Parse.Query(Parse.User);
query.ascending("createdAt");
query.limit(100);
query.find({
success: function(results) {
var sent = 0;
for (var i = 0; i < results.length; i++) {
var idlst = results[i].get("idString");
if (idlst != null && idlst.indexOf(value) <= -1) {
idlst += value+"|";
results[i].set("idString", idlst);
results[i].save();
sent = sent+1;
}
if (sent >= amount) {
break;
}
}
response.success(sent);
},
error: function() {
response.error("Test failed");
}
});
});

运行此云代码方法时,我收到“3”响应,这意味着它为 3 个用户调用了 .save。问题是,当我返回查看解析网站的数据库查看器时,它实际上只更新了一个用户(它始终是同一用户)。无论我运行此代码多少次,它实际上只会更新第一个用户..

有人知道为什么会这样吗?

最佳答案

savesaveAll 都是异步的,所以你应该确保保存过程已经完成。另请注意,用户对象只能由所有者更新或使用 masterkey 请求。

下面的代码应该可以工作:

var amount = 3;
Parse.Cloud.define("addToIDs", function(request, response) {

var value = request.params.itemId;

var query = new Parse.Query(Parse.User);
query.ascending("createdAt");
query.limit(100);
return query.find()
.then(function(results) { // success
var toSave = [];
var promise = new Parse.Promise();
for (var i = 0; i < results.length; i++) {
var idlst = results[i].get("idString");
if (idlst != null && idlst.indexOf(value) <= -1) {
idlst += value+"|";
results[i].set("idString", idlst);
toSave.push(results[i]);
}
if (toSave.length >= amount) {
break;
}
}
// use saveAll to save multiple object without bursting multiple request
Parse.Object.saveAll(toSave, {
useMasterKey: true,
success: function(list) {
promise.resolve(list.length);
},
error: function() {
promise.reject();
}
});
return promise;
}).then(function(length) { // success
response.success(length);
}, function() { // error
response.error("Test failed");
});
});

关于javascript - Parse Javascript Cloud Code .save() 仅适用于单个用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27441278/

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