मेरे क्लाउड कोड में, मैं अपने सभी रिकॉर्ड को अपडेट करना चाहता हूं जो एक नए डेटा के साथ लगभग 50k है। लेकिन मैंने देखा कि मेरा काम विफल रहता है भले ही मैं 1000 रिकॉर्ड सीमा का पालन करता हूं। मुझे सफलता/त्रुटि इस नौकरी के लिए त्रुटि नहीं कहा गया था। कोई विचार मैं इसे कैसे हल कर सकता हूं?पार्स क्लाउड कोड में डेटा के बैच को कैसे सहेजना है?
Parse.Cloud.job("hello", function(request, response) {
Parse.Cloud.useMasterKey();
var results = [];
var limit = 1000;
var saveUpdatedQueries = function(queries) {
console.log("updating records " + queries.length);
Parse.Object.saveAll(queries,{
success:function(lists){
console.log("lists ok "+lists.length);
if (!results.length) {
response.success("finished");
return;
}
updatingRecords(lists.length);
},error: function(reason){
console.log("error");
}
});
}
var updatingRecords = function(skip) {
var tempRecords = [];
if (skip) {
results = results.slice(skip);
}
console.log("skip: " + skip + " Results length: "+ results.length);
for (var i = 0; i < results.length; i++) {
var today = new Date();
var newObject = results[i];
newObject.set('newCulumn', today);
tempRecords.push(newObject);
if (i === results.length - 1 || tempRecords.length === limit) {
break;
};
};
saveUpdatedQueries(tempRecords);
}
var processCallback = function(res) {
results = results.concat(res);
if (res.length === limit) {
process(res[res.length - 1].id);
return;
}
updatingRecords(0);
}
var process = function(skip) {
var query = new Parse.Query(Parse.Installation);
if (skip) {
query.greaterThan("objectId", skip);
}
query.limit(limit);
query.ascending("objectId");
query.find().then(function querySuccess(res) {
processCallback(res);
}, function queryFailed(reason) {
if (reason.code == 155 || reason.code == 141) { // exceeded parse timout
console.log("time out error");
process(skip);
} else {
response.error("query unsuccessful, length of result " + results.length + ", error:" + reason.code + " " + reason.message);
}
});
}
process(false);
});
आप वादा का उपयोग क्यों नहीं कर रहे हैं? –
@MoNazemi मैंने सहेजने की कोशिश की सभी वादों, लेकिन मुझे अभी भी एक ही परिणाम मिल गया है –
यह कैसे विफल हो जाता है? क्या यह समय समाप्त हो गया है? 15 सेकंड के बाद एक नौकरी काटा जाएगा ... – Moonwalkr