Javascript 正在工作的云代码已停止工作。没有对代码进行任何更改
在过去的一个月里,我有一份工作安排得很好。但从6月4日起,我开始出现“运行的作业太多”的错误,即使没有作业在运行。我甚至试过简单的Hello World工作,但也不起作用。我提交了一个bug,但它仍然处于“分配”状态 现在,如果我检查“作业状态”面板,我有时会在两行中的任何一行(标记在下面)出错,这两行一直运行得很好。我也检查了我以前的提交,代码还是一样的。下面的错误 如果你能找到可疑的东西,请检查一下。我得到了一个表“news_cat”的列表,并一行一行地发送该行以执行httpRequest。响应被发送到另一个函数,通过使用xmlreader.js(),我从对象收集链接、标题等,并将其保存到“tointer”类。请查看:Javascript 正在工作的云代码已停止工作。没有对代码进行任何更改,javascript,parse-platform,Javascript,Parse Platform,在过去的一个月里,我有一份工作安排得很好。但从6月4日起,我开始出现“运行的作业太多”的错误,即使没有作业在运行。我甚至试过简单的Hello World工作,但也不起作用。我提交了一个bug,但它仍然处于“分配”状态 现在,如果我检查“作业状态”面板,我有时会在两行中的任何一行(标记在下面)出错,这两行一直运行得很好。我也检查了我以前的提交,代码还是一样的。下面的错误 如果你能找到可疑的东西,请检查一下。我得到了一个表“news_cat”的列表,并一行一行地发送该行以执行httpRequest。
var xmlreader = require('cloud/xmlreader.js');
var ToiInter = Parse.Object.extend("ToiInter");
//Get urls from all the newspaper-category pairs
Parse.Cloud.job("job_get_data_for_all_newspapers", function (request, response) {
//news_cat class contains the newspaper_category pairs
var newsCatList = Parse.Object.extend("news_cat");
var query = new Parse.Query(newsCatList);
query.find().then(function(list){
// console.log("Successfully retrieved " + list.length);
//create array and use Promise.when to wait till it is filled
var promisesGetNP = [];
for (var i = 0; i < list.length; i++) {
promisesGetNP.push(getDataForNewspaper(list[i].get("newspaper_id_column"), list[i].get("category_id_column"), list[i].get("url_column")));
}
return Parse.Promise.when(promisesGetNP);
}).then (function(result) {
// console.log("done job");
response.success("Saving completed successfully.");
},function(error) {
console.log("job not done, error - "+error.message);
response.error("Something went wrong.");
}
);
});
//get httpResponse from a url
function getDataForNewspaper(newspaperId, catId , feedUrl){
console.log("getData NEW & CAT ID - " + newspaperId + ", "+catId+ " feedUrl "+feedUrl);
//create array and use Promise.when to wait till it is filled
var promisesGetData = [];
return Parse.Cloud.httpRequest({
url: feedUrl
}).then(function(httpResponse){
promisesGetData.push(processDataForNewspaper(httpResponse, newspaperId, catId));
return Parse.Promise.when(promisesGetData);
}).then(function() {
console.log("Done getData? ");
return Parse.Promise.as("Got Data");
});
}
function processDataForNewspaper(httpResponse, newspaperId, catId){
console.log("processData NEW & CAT ID - " + newspaperId + ", "+catId);
someXml = httpResponse.text
//using xmlreader.js and sax.js to parse xml into text
xmlreader.read(someXml, function (err, res){
if(err) {
return console.log(err);
}
//create a new array and push objects with data in it
var listArray = [];
res.rss.channel.item.each(function (i, item){
var newsArt = new ToiInter();
newsArt.set("link", item.link.text()); //get error here
newsArt.set("title", item.title.text()); //or here
newsArt.set("pubDate", item.pubDate.text());
newsArt.set("newspaper_id",newspaperId);
newsArt.set("cat_id",catId);
listArray.push(newsArt);
});
//create a new promises array
var promises = new Array();
Parse.Object.saveAll(listArray, {
success: function(objs) {
promises.push(objs);
console.log("SAVED ALL!");
},
error: function(error) {
console.log("ERROR WHILE SAVING - "+error.message);
}
});
return Parse.Promise.when(promises);
});
}
其中一个RSS源可能包含无效的XML,或者它可能提供了您可能不期望的XML结构。您可能希望将
processdataforpaper
函数的主体包装在一个try-catch中,捕获错误并至少记录爆炸的报纸Id。那可以给你一个线索。这感觉像是数据问题,因为您没有更改任何代码。@WANTOTOCODE您有解决此问题的方法吗??我也有同样类型的问题类型错误:Object[Object Object]没有方法“text”。。。请让我知道这件事issue@venkatesh我在Parse本身的一次停机期间遇到了这个问题。我通过FB帮助门户与他们联系,几天后就修复了。之后我再也没有看到这个问题了!
E2014-06-13T10:55:15.843Z] v315: Ran job job_get_data_for_all_newspapers with:
Input: {}
Failed with: TypeError: Object [object Object] has no method 'text'
at main.js:146:45
at Object.object.each (xmlreader.js:137:6)
at main.js:143:30
at Object.saxparser.onend (xmlreader.js:104:10)
at emit (sax.js:616:33)
at end (sax.js:655:3)
at Object.write (sax.js:917:30)
at Object.SAXParser.close (sax.js:153:38)
at Object.exports.read (xmlreader.js:157:29)
at processDataForNewspaper (main.js:136:15)