获取Parse.Query的结果到另一个输出变量table。 JAVASCRIPT和PARSE.COM

时间:2016-04-18 13:00:46

标签: javascript parse-platform

我的函数从数据库parse.com获取单个对象。我需要将查询结果发送到另一个变量。这是我的功能:

function pobierzOcene(id){
  var ocena = new Ocena();
    var q = new Parse.Query(Parse.Object.extend("Ocena"));
    q.equalTo("objectId",id);
    q.first({
      success: function(result){
        ocena.przedmiot = result.get("ocenaPrzedmiot").id;
        ocena.data = result.createdAt;
        ocena.waga = result.get("ocenWaga");
        ocena.wartosc = result.get("ocenaWartosc");
        return ocena;
      },
      error: function(e){
        console.log(e.message());
        return e.message();
      }
    });
}

我正在使用"返回ocena;"去做这个。在我的另一个功能中:

var o = pobierzOcene(oceny[j].id);

为什么变量o为空?

2 个答案:

答案 0 :(得分:0)

由于Parse查询函数的异步性质。您的函数pobierzOcene到达其执行结束,因为它不等待您的异步查询函数q.first完成。其中一种方法是使用Parse Promises重写函数:

function pobierzOcene(id){
    var q = new Parse.Query("Ocena");
    q.equalTo("objectId",id);
    return q.first(); // return a promise to wait on
}

像这样调用函数:

pobierzOcene(oceny[j].id).then( function(result) {

   // process the results here instead

}, function(error) {
    console.log(error); // error
});

答案 1 :(得分:0)

我有第二个功能问题。我认为.. 函数列出学生和他们的属性(姓名,姓氏,身份和学位)。在基地: 学生0有3度。 学生1没有学位。 学生2有4度。

我的功能:

function DownloadList(){
  var query = new Parse.Query(Parse.Object.extend("Groups"));
  var Students;
  var degree = new Degree();

  query.equalTo("objectId",GroupId);
  query.include("listStudents");
  query.include("degree");
  query.include("StudentDegrees");
  query.include("SubjectDegree");
  query.first({
    success:function(res){
      var degree = res.get("Degree").id;
      var listOfStudents = res.get("listStudents");
      Students = new Array();

      for (var i=0; i<listOfStudents.length ; i++){
        student = new Student();
        student.name = listOfStudents[i].get("name");
        student.surname = listOfStudents[i].get("surname");
        student.index = listOfStudents[i].get("index");
        student.objectId = listOfStudents[i].id;

        var degrees = listOfStudents[i].get("StudentDegrees");
        for (var j in degrees){
          takeADegree(degrees[j].id).then(function(result){
            var degree = new Degree();
            degree.subject = result.get("SubjectDegree");
            if (subject == degree.subject.id){
              degree.date = result.createdAt;
              degree.weight = result.get("degreeWeight");
              degree.value = result.get("degreeValue");
              student.AddDegree(degree);
            }
          },
          function(error){
            console.log(error);
          });
        }
        Students.push(student);
      }
      console.log(Students);
    },
    error:function(err){
      console.log(err.message);
    }
  });
}

功能takeADegree(id):

function takeADegree(id){
    var q = new Parse.Query("Degree");
    q.equalTo("objectId",id);
    return q.first();
}

在图片中,函数的结果为:result

箭头指示的字段(oceny-degrees)应如下所示:     学生0 = oceny:数组[3],     学生1 = oceny:数组[0],     学生2 = oceny:数组[4]。 问题现在在哪里?