Parse Cloud Code - запрос ожидания и возврата отношения - PullRequest
0 голосов
/ 19 февраля 2019

, поэтому я пытаюсь запустить эту функцию облачного запроса.В основном, я хотел бы получить возврат профиля по его идентификатору.Затем, используя этот объект результата, выполните запрос отношения и верните первый результат.

Я не уверен, что перепутал, но я изо всех сил ожидаю завершения полного запроса перед возвратом.

Спасибо

Parse.Cloud.define("getLastWeightForAnimal", async (request) => {

try {

    var AnimalProfiles = Parse.Object.extend("animal_profiles");
    var query = new Parse.Query(AnimalProfiles);

    query.get(request.params.id).then((animalProfile) => {

        var AnimalWeights = animalProfile.relation("weights").query();

        AnimalWeights.descending("createdAt");

        let result = await AnimalWeights.first();
        return result;

    }, (error) => {
      // The object was not retrieved successfully.
      // error is a Parse.Error with an error code and message.
        console.log("Uh Oh Inner");
        console.log("Error Inner: "+  error);
    });

} catch (e) {
    console.log("Uh Oh");
    console.log("Error: "+  e);
}


});

1 Ответ

0 голосов
/ 19 февраля 2019

Если вы вернетесь внутрь обещания .then(function(){return 'a'}) the верните 'a' does not return the async (request) `!

Если вы сделаете

Promise.resolve()
  .then(function(){return 'a'}) // this 'a' does not go to any parent function!
  .then(function(val){console.log(val)}) // it goes here!

, вы увидите «a» в своем журнале, в качестве простой иллюстрации.

Вы можете переключить его на асинхронное / ожидание

Parse.Cloud.define("getLastWeightForAnimal", async (request) => {

  try {

    var AnimalProfiles = Parse.Object.extend("animal_profiles");
    var query = new Parse.Query(AnimalProfiles);

    var animalProfile = await query.get(request.params.id)

    var AnimalWeights = animalProfile.relation("weights").query();

    AnimalWeights.descending("createdAt");

    let result = await AnimalWeights.first();
    return result;

  } catch (e) {
    console.log("Uh Oh");
    console.log("Error: "+  e);
  }


});

ИЛИ просто верните обещание, которое, поскольку вы используете async, автоматически вернет значение обещания.

Parse.Cloud.define("getLastWeightForAnimal", async (request) => {

  try {

    var AnimalProfiles = Parse.Object.extend("animal_profiles");
    var query = new Parse.Query(AnimalProfiles);

    // note new return!!
    return query.get(request.params.id).then((animalProfile) => {

        var AnimalWeights = animalProfile.relation("weights").query();

        AnimalWeights.descending("createdAt");

        let result = await AnimalWeights.first();
        return result;

    }, (error) => {
      // The object was not retrieved successfully.
      // error is a Parse.Error with an error code and message.
        console.log("Uh Oh Inner");
        console.log("Error Inner: "+  error);
    });

  } catch (e) {
    console.log("Uh Oh");
    console.log("Error: "+  e);
  }


});
...