我有基本的Javascript知识和关于返回函数的问题。我已经阅读了尽可能多的帖子,但我仍然无法解决我遇到的问题。以下代码计算我拥有的数据库中用户的平均评级。该代码有效,但它没有“返回”评级。它正确计算。如何构造它的语法,以便返回我计算的评级?
function renderRating(applicantId) {
wixData.query("Project_Applications")
.eq('_owner', applicantId)
.eq('orgCompleted', "Yes")
.find()
.then(res => {
if (res.length > 0) {
let reviews = res.items;
let stats = reviews.reduce((agg, item) => {
return {
sum: agg.sum+item.userRating,
count: agg.count+1
};
}, {sum: 0, count: 0});
let rating = (Math.round(stats.sum * 2 / stats.count) / 2);
return rating;
}
});
}
答案 0 :(得分:2)
您编写的函数执行异步操作:它使用基于Promise的API查询数据库中的数据,这意味着return
- ed值不会立即“准备好”。只需返回Promise即可。
function renderRating(applicantId) {
return wixData.query("Project_Applications") // ...
}
现在你的函数返回一个Promise,这意味着当你想在某个地方使用它时,你必须使用.then(() => { ... })
。