所以我想让这个云查询功能运行。基本上,我想通过ID返回配置文件。然后使用该结果对象,运行关系查询并返回第一个结果。
我不确定是否感到困惑,但是我在等待完整的查询完成后才返回。
谢谢
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);
}
});
答案 0 :(得分:0)
如果您在承诺.then(function(){return 'a'}) the
内返回,则返回'a'does not return the
异步(请求)`!
如果您这样做
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);
}
});