gpt4 book ai didi

javascript - 在 Parse Framework Cloud Code 中运行同步查询

转载 作者:数据小太阳 更新时间:2023-10-29 05:38:43 26 4
gpt4 key购买 nike

我为 Parse Framework 编写了一个异步云后台作业,它根据每个用户在“@”符号之前的电子邮件为他们生成一个显示用户名。不幸的是,我在运行作业时收到“太多计数操作”错误。有没有办法让查询和保存串行而不是并行运行?我在文档中看到 promises 是可能的,但我对如何使其与嵌套查询一起工作感到困惑。

Parse.Cloud.job("generateUsernameForEveryUser", function(request, status) {

// Set up to modify user data
Parse.Cloud.useMasterKey();
var counter = 0;
// Query for all users
var query = new Parse.Query(Parse.User);
query.each(function(user) {

createUsernameForUser(user, 0, {
success: function(username) {
if(username == null) {
status.error();
} else {
user.set("displayUsername", username);
user.set("displayUsernameUppercase", username.toUpperCase());
user.save();
}
},
error: function(error) {
status.error("Error: " + error.message);
}

});

}).then(function() {
// Set the job's success status
status.success("Username generation completed successfully.");
}, function(error) {
// Set the job's error status
status.error("Uh oh, something went wrong.");
});

});

function createUsernameForUser(user, count, callback) {

var generatedUsername = user.getEmail().substring(0, user.getEmail().indexOf("@"));

if(count > 0) {
//Quotes added to ensure no math is done between generatedUsername and count
generatedUsername = "" + generatedUsername + "" + count;
}

var userQuery = new Parse.Query(Parse.User);
userQuery.equalTo("displayUsernameUppercase", generatedUsername.toUpperCase());
userQuery.count({

success: function(userCount) {

if(userCount > 0) {
createUsernameForUser(user, count + 1, {
success : function(responseUsername) {
callback.success(responseUsername);
},
error: function(error) {
callback.error(error.message);
}
});
}

else {
callback.success(generatedUsername);
}

},
error: function(error) {
console.log("Error trying to count users: " + error.message);
callback.error("Error trying to count users: " + error.message);
}

});//End of userQuery call

}

最佳答案

这是一个很晚的答案,但对正在经历这个问题的人会有帮助。

太多计数操作 返回错误,因为 query.each 仅当我们有该类的 100 行或更少行的数据时才有效。

同样的需求我们可以实现如下:

  1. 获取所有用户。
  2. 创建用户名并将它们存储到一个数组中。有关更多信息,请参阅 parse.com 批处理操作。var users = new Array();
    ....将所有创建的用户对象推送给用户....
    Parse.Object.saveAll(用户);//保存列表-

希望这能解决。

关于javascript - 在 Parse Framework Cloud Code 中运行同步查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20202389/

26 4 0
文章推荐: ios - 在 xcode 中使用 swift 设置文本字段的填充
文章推荐: javascript - RequireJS require-less 和 require-css 路径
文章推荐: ios - Swift:无法分配给类型为 'AnyObject?!' 的不可变表达式
文章推荐: javascript - TinyMCE - 允许文本作为 和/或 的直接子元素