我在Express中构建应用程序并使用Postgres作为我的数据库,Sequelize用于ORM。
在我的数据库中,每个Post
可以包含5种类型中的一种,1
,2
,3
,4
,5
。
我想按类型显示所有帖子的数量。
router.route('/post).get(async (req, res) => {
const postOne = await Post.findAll({
where: {
state: 1
}
});
const postTwo = await Post.findAll({
where: {
state: 2
}
});
res.send({ postOne: postOne.length, postTwo: postTwo.length });
我可以为所有5种类型编写这样的内容,但我想知道是否有更短的方法来做到这一点,以便我不必编写相同的代码5次。
谢谢!
答案 0 :(得分:0)
const getPostWithType = (type) => Post.findAll({
where: {
state: type
}
});
现在你可以改为await getPostWithType(1)
。甚至更好:
const postTypes = [1,2,3,4,5];
const allPosts = await Promise.all(postTypes.map(getPostWithType));
// allPosts is now an array with the results. You can map it again to get the lengths
const allPostLengths = allPosts.map(p => p.length);
答案 1 :(得分:0)
使用数组怎么样?如下......
let promiseArray = [];
for (let i = 1; i <= 5; i++) {
let promise = Post.findAll({
where: {
state: i
}
});
promiseArray.push(promise);
}
Promise.all(promiseArray).then(function(response) {
//Do whatever...
});
&#13;