0

解析データベース内に 2 つのクラスがあり、1 つは「TrebUser」と呼ばれ、もう 1 つは「UserImage」と呼ばれ、次のように説明されています。

TrebUser
-------------------------------------------------- ---
| オブジェクト ID | ファーストネーム | 姓 | 画像 |

(文字列) (文字列) (文字列) (UserImage ObjectId)

ユーザーイメージ
------------------------------------------------
| オブジェクト ID | 画像 | イメージ名 |
(文字列) (ファイル) (文字列)

特定の TrebUser について、名前、姓を含み、画像名を表示するプロファイルを表示したいと考えています (画像名を表示できたら、実際に画像を表示しようとします)。1 つのクエリを使用して TrebUser を取得し、次に 2 番目のネストされたクエリまたは promise (以下で使用したように) を使用して、そのユーザーのイメージ名を取得し、そのイメージ名を印刷する場所に戻そうとしています。スクリーン。何らかの理由で、ポップアップアラートを使用すると名前が問題なく表示されますが、常に未定義として返されます。これは非同期実行と関係があると思います。何かご意見は?

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);

    });
}
4

1 に答える 1