七月老师你好,我有个问题请教一下:
我在学习此课程,另外把学习到的知识在做一个博客项目,遇到了一个查询的问题:
文章下有评论以及分类,在查询文章列表时候,同时去查询每篇文章的分类详情,和评论的总数。
第一种方法是:使用for循环,在内部异步查询,这样是可以达到我预期结果,不知道这样是否可以呢?我记得你在课程里面说不要在for循环里面查询数据库。
// 获取文章列表
static async getArticleList() {
const article = await Article.scope('iv').findAll({
where: {
deleted_at: null
},
});
for (let item of article) {
// 查询对应文章的分类详情
const cateogry = await CategoryDao.getCategory(item.getDataValue('category_id'));
item.setDataValue('cateogry', cateogry);
// 查询对应的文章评论总数
const comments_num = await ArticleDao._getArticleComments(item.getDataValue('id'));
item.setDataValue('comments_num', comments_num);
}
return article;
}
// 查询对应的文章评论总数
static async _getArticleComments(article_id) {
return await Comments.count({
where: {
article_id
}
})
}
第二种方法:
// 获取文章列表
static async getArticleList() {
const article = await Article.scope('iv').findAll({
where: {
deleted_at: null
},
});
const articleIds = [];
const categoryIds = [];
article.forEach(article => {
articleIds.push(article.id);
categoryIds.push(article.category_id);
});
const category = await this._getArticleCategoryDetail(categoryIds);
const comments = await this._getArticleComments(articleIds);
// 这样查询出来不知道如何合并到 article 里面,article是一个数组
return article;
}
第二种方法,查询出来的分类和评论数据不知道如何合并到 article 里面,article是一个数组。
请七月老师指点一下,谢谢。