我的函数从数据库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为空?
答案 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();
}
箭头指示的字段(oceny-degrees)应如下所示: 学生0 = oceny:数组[3], 学生1 = oceny:数组[0], 学生2 = oceny:数组[4]。 问题现在在哪里?