Javascript 不断获取错误:“quot;失败,原因是:未捕获的语法错误:意外的令牌T位于<;未知文件>;:1“;(解析云代码)
如果有人能帮我,这将是一个救命稻草 (我正在使用PARSE) 基本上,这个解析作业试图做的是 1) 查询名为channel的类的所有对象 2) 循环遍历查询返回的“Results”数组中的每个对象 3) 调用返回JSON字符串的Google API 4) 解析JSON并保存名为Videos的对象的新实例 问题是我不断地得到错误: 失败,原因为:未捕获语法错误:1中出现意外标记T 失败,原因为:未捕获语法错误:0中的输入意外结束Javascript 不断获取错误:“quot;失败,原因是:未捕获的语法错误:意外的令牌T位于<;未知文件>;:1“;(解析云代码),javascript,json,parse-platform,Javascript,Json,Parse Platform,如果有人能帮我,这将是一个救命稻草 (我正在使用PARSE) 基本上,这个解析作业试图做的是 1) 查询名为channel的类的所有对象 2) 循环遍历查询返回的“Results”数组中的每个对象 3) 调用返回JSON字符串的Google API 4) 解析JSON并保存名为Videos的对象的新实例 问题是我不断地得到错误: 失败,原因为:未捕获语法错误:1中出现意外标记T 失败,原因为:未捕获语法错误:0中的输入意外结束 Parse.Cloud.job("TestFunction", fu
Parse.Cloud.job("TestFunction", function(request, status) {
var query = new Parse.Query("Channel");
query.find ({
success: function (results) {
var httpRaw;
for (var i = 0; i < results.length; i++) {
var channel_id = results[i].get("channel_id");
Parse.Cloud.httpRequest({
url: 'https://www.googleapis.com/youtube/v3/search?part=snippet&channelId=UCKy1dAqELo0zrOtPkf0eTMw&maxResults=50&order=viewCount&type=video&key=AIzaSyCLGCJOPU8VVj7daoh5HwXZASnmGoc4ylo',
success: function (httpResponse) {
httpRaw = httpResponse.text;
},
error: function (httpResponse) {
console.error('Request failed with response code ' + httpResponse.status);
}
});
var json = JSON.parse(httpRaw);
for (var z = 0; z < json.items.length ; z++){
var video = new Parse.Object("Video");
video.set("video_id", json.items[z].id.videoId.toString());
video.set("video_title", json.items[z].snippet.title.toString());
video.set("video_description", json.items[z].snippet.description.toString());
video.set("video_thumbnail", json.items[z].snippet.thumbnails.medium.url.toString());
video.set("date_published", json.items[z].snippet.publishedAt.toString());
var relation = video.relation("parent_channel");
relation.add(results[i]);
video.save();
}
}
},
error: function() {
}
});
Parse.Cloud.job(“TestFunction”、函数(请求、状态){
var query=newparse.query(“通道”);
查询.查找({
成功:功能(结果){
var-httpRaw;
对于(var i=0;i
})) 我猜原因是
JSON.parse()
。HTTP请求在云代码中是非阻塞的(通常在JavaScript中到处都是),因此在设置httpRaw
之前对JSON.parse()
进行评估
至少,您需要将parse()调用和以下循环移动到HTTP请求的成功处理程序中,以便它们等待您得到有效响应。我建议使用承诺,而不是成功/错误回调
下面是我将如何处理它(警告:未测试的代码如下…)
Parse.Cloud.job(“TestFunction”、函数(请求、状态){
var query=newparse.query(“通道”);
query.find().then(函数(结果){
var请求=[];
对于(var i=0;i
我猜原因是JSON.parse()
。HTTP请求在云代码中是非阻塞的(通常在JavaScript中到处都是),因此在设置httpRaw
之前对JSON.parse()
进行评估
至少,您需要将parse()调用和以下循环移动到HTTP请求的成功处理程序中,以便它们等待您得到有效响应。我建议使用承诺,而不是成功/错误回调
下面是我将如何处理它(警告:未测试的代码如下…)
Parse.Cloud.job(“TestFunction”、函数(请求、状态){
var query=newparse.query(“通道”);
query.find().then(函数(结果){
var请求=[];
对于(var i=0;iParse.Cloud.job("TestFunction", function(request, status) {
var query = new Parse.Query("Channel");
query.find().then(function(results) {
var requests = [];
for (var i = 0; i < results.length; i++) {
var channel_id = results[i].get("channel_id");
requests.push(Parse.Cloud.httpRequest({
url: 'https://www.googleapis.com/youtube/v3/search?part=snippet&channelId=UCKy1dAqELo0zrOtPkf0eTMw&maxResults=50&order=viewCount&type=video&key=AIzaSyCLGCJOPU8VVj7daoh5HwXZASnmGoc4ylo'
}));
}
return Parse.Promise.when(requests);
}).then(function(results) {
var videos = [];
for(var i = 0; i < results.length; i++) {
var httpRaw = results[i].text;
var json = JSON.parse(httpRaw);
for (var z = 0; z < json.items.length ; z++){
var video = new Parse.Object("Video");
video.set("video_id", json.items[z].id.videoId.toString());
video.set("video_title", json.items[z].snippet.title.toString());
video.set("video_description", json.items[z].snippet.description.toString());
video.set("video_thumbnail", json.items[z].snippet.thumbnails.medium.url.toString());
video.set("date_published", json.items[z].snippet.publishedAt.toString());
var relation = video.relation("parent_channel");
relation.add(results[i]);
videos.push(video);
}
}
return Parse.Object.saveAll(videos);
});
});