У меня есть два класса в моей базе данных синтаксического анализа, один из которых называется «TrebUser», а другой называется «UserImage», описанный ниже:
TrebUser
-------------------------------------------------------------- ------
| идентификатор объекта | имя | фамилия | изображение |
(строка) (строка) (строка) (UserImage ObjectId)
Изображение пользователя
------------------------------------
| идентификатор объекта | изображение | imagename |
(строка) (файл) (строка)
Для данного TrebUser я хочу отобразить профиль, который включает их имя, фамилию и показывает имя изображения (как только мне удастся отобразить имя изображения, я попытаюсь фактически отобразить изображение). Я пытаюсь использовать один запрос для получения TrebUser, а затем второй вложенный запрос или обещание (как я использовал ниже), чтобы получить имя изображения для этого пользователя, а затем вернуть это имя изображения туда, где я его напечатаю. экран. По какой-то причине оно всегда возвращается как неопределенное, хотя когда я использую всплывающее предупреждение, оно показывает имя просто отлично. Я думаю, что это как-то связано с асинхронным выполнением. Какие-нибудь мысли?
function getPhoto(i){
var TrebUser = Parse.Object.extend("TrebUser");
var queryTrebUser = new Parse.Query(TrebUser);
var UserImage = Parse.Object.extend("UserImage");
var queryUserImage = new Parse.Query(UserImage);
queryTrebUser.find().then(function(results) {
alert("Successfully retrieved " + results.length + "object");
var object = results[i];
var imageId = object.get('image').id;
queryUserImage.equalTo("objectId", imageId);
return queryUserImage.find();
}).then(function(imageResults) {
var object2 = imageResults[i];
//this alert shows the image 'name' perfectly, however when i return the object2.get('name') it shows
//up as undefined!
alert("Successfully retrieved " + imageResults.length + " object with name " + object2.get('name'));
return object2.get('name');
}, function(error) {
alert("Error: " + error.code + " " + error.message);
});
}