в моем приложении Angular я пытаюсь отобразить набор результатов, которые поступают из трех классов. Данные хранятся на Parse.com.
Я могу отлично справиться с типом отношения Pointer для взаимно однозначного (возвращаются связанные баллы).
Проблема начинается, когда я пытаюсь включить данные из класса Location в мой последний возвращенный JSON.
Надеюсь, это просто базовая нотация, которую я пропускаю. Большое спасибо!
Строка: адрес
.controller('BrowseCtrl', function($scope) {
// Get "Doctors" and associated "Scores"
// via Pointer in Doctors Class named "score"
var query = new Parse.Query("Doctors");
query.include("score");
query.find()
.then(function(result){
var doctorsArray = new Array();
for(i in result){
var obj = result[i];
var doctorIds = obj.id;
var docFirstname = obj.get("firstname");
var mainScore = obj.get("score").get("mainScore");
doctorsArray.push({
Scores:{
DocMainScore: mainScore
},
firstname: docFirstname,
});
}
// Get Locations.
// -can be more than one per Doctor
// Class Doctors has a Relation column "location" pointing to Locations
var locationsArray = new Array();
var locationRelation = obj.relation('location');
var locationQuery = locationRelation.query();
locationQuery.find({
success: function(locations) {
for(j in locations){
var locObj = locations[j];
var locName = locObj.get("name");
console.log(locName);
}
}
})
// send data to the view
$scope.myData = doctorsArray;
console.log(doctorsArray);
});
})
То, что я пытаюсь сделать, - это получить данные из локаций в doctorArray.
Прежде всего, вы используете obj вне поля for, где он был назначен. Таким образом, он получит только место для последнего документа, я уверен, что это не то, что вы хотели.
То, что вы хотите, должно быть примерно так:
// inside your Doctors query result
Parse.Promise.when(
// get locations for all doctors
result.map(function(doc) {
return doc.relation('location').query().find();
})
).then(function() {
var docsLocations = arguments;
// then map each doctor
$scope.myData = result.map(function(doc, i) {
// and return an object with all properties you want
return {
Scores: {
DocMainScore: doc.get('score').get('mainScore')
},
firstname: doc.get('firstname'),
locations: docsLocations[i]
};
});
});