Javascript 未返回Parse.com http响应,且未定义状态

Javascript 未返回Parse.com http响应,且未定义状态,javascript,parse-platform,Javascript,Parse Platform,我在写语法分析的背景工作时面临两个问题 这是我的密码 Parse.Cloud.job("createSilentUsers",function(request,response){ // Set up to modify user data Parse.Cloud.useMasterKey(); //get all the users from backupusers table where isbiscootactivated = 0 and issnsactivated=0

我在写语法分析的背景工作时面临两个问题

这是我的密码

Parse.Cloud.job("createSilentUsers",function(request,response){

 // Set up to modify user data
  Parse.Cloud.useMasterKey();

    //get all the users from backupusers table where isbiscootactivated = 0 and issnsactivated=0
     // Query for all users
  var query = new Parse.Query("biscootusers");
  query.equalTo("isbiscootactivated",0);
  query.equalTo("issnsactivated",0);
  query.first({
                  success: function(result) {
                    // Successfully retrieved the object.
                    var objUser = result;
                    console.log(result.attributes.deviceid);                        
                    console.log(result.attributes.imei);
                    console.log(result.attributes.appname);
                    console.log(result.attributes.appid);
                    console.log(result.attributes.appversion);

                    //check if the deviceid and imei set is already a biscoot activated user
                    var promise = Parse.Promise.as();                   
                    promise = promise.then(function() {
                            console.log("we are inside the prmise");
                            return Parse.Cloud.httpRequest({
                                              method: 'POST',
                                              url: 'http://<our server name>/1.0/PartnerActivation/isDeviceExists',
                                              headers: {
                                                        'Content-Type': 'application/x-www-form-urlencoded'},
                                              body: {
                                    imei: result.attributes.imei,
                                    deviceid: result.attributes.deviceid,
                                    appname: result.attributes.appname,
                                        appid: result.attributes.appid,
                                        appversion: result.attributes.appversion}
                                            }).then(function(httpResponse) 
                                                    {
                                                       console.log("Response of isdeviceactivated is " + httpResponse.text);
                                                       if(httpResponse.text == 'true' || httpResponse.text="True")
                                                            {                                                                       
                                                                console.log("The user is already activated");           
                                                                objUser.set("isbiscootactivated",1);
                                                                objUser.save();
                                                            }
                                                            else
                                                            {
                                                                //do the biscoot activation here
                                                                console.log("its not activated, lets do the biscootusers activation");
                                                            }
                                                     }, 
                                                    function(error) {
                                                      console.log("error occurred during isDeviceExists api as " + error);
                                                    });                                                
                                                  });                                               

                            console.log("nothing seems to have happened");

                  },
                  error: function(error) {
                    console.log("Error: " + error.code + " " + error.message);
                  }
        }).then(function() {
                    // Set the job's success status
                    status.success("All the users been set to the db successfully");
  }, function(error) {
        // Set the job's error status
        status.error("Uh oh, something went wrong.");
  });   
});
Parse.Cloud.job(“createSilentUsers”,函数(请求、响应){
//设置以修改用户数据
Parse.Cloud.useMasterKey();
//从backupusers表中获取所有用户,其中isbiscootactivated=0和isnsactivated=0
//所有用户的查询
var query=newparse.query(“biscoutUsers”);
query.equalTo(“isbiscootactivated”,0);
query.equalTo(“issnsactivated”,0);
第一个问题({
成功:功能(结果){
//已成功检索该对象。
var objUser=结果;
console.log(result.attributes.deviceid);
log(result.attributes.imei);
console.log(result.attributes.appname);
console.log(result.attributes.appid);
console.log(result.attributes.appversion);
//检查deviceid和imei集合是否已经是biscoot激活的用户
var promise=Parse.promise.as();
promise=promise.then(函数(){
log(“我们在项目中”);
返回Parse.Cloud.httpRequest({
方法:“POST”,
网址:'http:///1.0/PartnerActivation/isDeviceExists',
标题:{
“内容类型”:“application/x-www-form-urlencoded”},
正文:{
imei:result.attributes.imei,
deviceid:result.attributes.deviceid,
appname:result.attributes.appname,
appid:result.attributes.appid,
appversion:result.attributes.appversion}
}).then(函数(httpResponse)
{
log(“isdeviceactivated的响应为”+httpResponse.text);
if(httpResponse.text==“true”| | httpResponse.text=“true”)
{                                                                       
console.log(“用户已激活”);
对象集(“isbiscootactivated”,1);
objUser.save();
}
其他的
{
//在这里激活biscoot
log(“它没有被激活,让我们来激活BiscoutUsers”);
}
}, 
函数(错误){
log(“isDeviceExists api期间发生的错误为”+错误);
});                                                
});                                               
log(“似乎什么也没发生”);
},
错误:函数(错误){
console.log(“错误:+Error.code+”+Error.message);
}
}).然后(函数(){
//设置作业的成功状态
status.success(“所有用户已成功设置到数据库”);
},函数(错误){
//设置作业的错误状态
状态错误(“哦,出了点问题。”);
});   
});
我的问题是

  • 在日志中,我经常看到这个错误

    运行作业createSilentUsers时使用: 输入:{} 失败原因:ReferenceError:未定义状态 在main.js:74:9 在r(Parse.js:2:4981) 在Parse.js:2:4531 at Array.forEach(本机) 在Object.E.each.E.forEach[as_arrayEach](Parse.js:1:666) 在n.extend.resolve(Parse.js:2:4482) 在空。(Parse.js:2:5061) 在r(Parse.js:2:4981) 在n.extend.then(Parse.js:2:5327) 在r(Parse.js:2:5035)

  • http请求似乎不起作用,而如果我从某个http REST客户端测试它,它总是起作用

  • 只需将函数标题上的“响应”更改为“状态”

    Parse.Cloud.job("createSilentUsers",function(request,response){
    
    对此

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

    我猜是这一行出错了,因为
    status
    未定义<代码>状态.success(“所有用户已成功设置到数据库”)(或者在发生错误时使用下面的代码,您也可以使用
    状态
    )。是的,但是“状态”是解析后台作业的必填项,否则它不会在日志中记录为成功,也可以说是示例“与其他云功能一样,您应该处理成功和错误情况。对于后台作业,可以在函数完成时调用status.success()或status.error()。然后,作业执行状态将设置为“已完成”。如果您不调用这两个方法中的任何一个,您的作业将在15分钟后超时。”是的,但它们使用
    status
    作为内部函数的第二个参数,您有
    response