में सिंक्रोनस क्वेरी चलाना मैंने पार्स फ्रेमवर्क के लिए एक एसिंक्रोनस क्लाउड बैकग्राउंड जॉब लिखा है जो प्रत्येक उपयोगकर्ता के लिए '@' प्रतीक से पहले उनके ईमेल के आधार पर एक प्रदर्शन उपयोगकर्ता नाम उत्पन्न करता है। दुर्भाग्यवश, जब मैं नौकरी चलाता हूं तो मुझे "बहुत अधिक गिनती संचालन" त्रुटि मिल रही है। क्या प्रश्नों का पालन करने और समानांतर में विरोध के रूप में श्रृंखला में दौड़ने का कोई तरीका है? मैंने प्रलेखन में देखा कि यह वादे के साथ संभव है, लेकिन मैं उलझन में हूं कि यह नेस्टेड प्रश्नों के साथ कैसे काम करना है।पार्स फ्रेमवर्क क्लाउड कोड
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
}