Parse Cloud Code - запрос ожидания и возврата отношения
Поэтому я пытаюсь запустить эту функцию облачного запроса. В основном, я хотел бы получить возврат профиля по его идентификатору. Затем, используя этот объект результата, выполните запрос отношения и верните первый результат.
Я не уверен, что запутался, но я изо всех сил жду, когда закончится полный запрос, прежде чем вернуться.
Спасибо
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 ответ
Если вы вернетесь внутри обещания .then(function(){return 'a'}) the
вернуть 'а'does not return the
async (запрос)`!
Если вы делаете
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);
}
});