因此,在我的应用程序中,我有类别和文章,它们是相互关联的。起初,我检索所有类别,每个类别中都有文章。问题是,我想通过userId
过滤其中的类别和文章,但我不知道如何做到这一点,因为我使用TypeScript并出现错误。
const articlesInCategories = (await (await ArticleCategory.fetchAll())
.query((qb: QueryBuilder) => {
qb.innerJoin(Table.ARTICLE_CATEGORY_RELATION, 'article_category_relation.category_id', 'article_category.id' );
qb.innerJoin(Table.ARTICLE, 'article.id', 'article_category_relation.article_id');
// Next condition is only for Categories not for Articles inside it
if (roleId == Role.manager) {
qb.where('user_id', userId);
}
qb.orderBy('id', 'desc');
})
.fetch({
withRelated: [{'articles': function (qb: QueryBuilder) => qb.where('user_id', userId)}]
}));
例如,如果userId
是1
,则只想获得那些类别,这些类别包含id为1
的用户编写的文章。MOREOVER,并非所有文章,但仅由id为1
的用户编写。
我在withRelated
:Type '{ articles: (qb: QueryBuilder) => QueryBuilder<any, any[]>; }' is not assignable to type 'string'.ts(2322)
附近有TS错误
在这种情况下,你能帮我使用TypeScript吗?或者建议任何其他方法来实现我想要的东西?
这是错误的方法。如果我做到以下几点,效果会很好:
const articlesInCategories = await new ArticleCategory().query((qb: QueryBuilder) => {
.query((qb: QueryBuilder) => {
qb.innerJoin(Table.ARTICLE_CATEGORY_RELATION, 'article_category_relation.category_id', 'article_category.id' );
qb.innerJoin(Table.ARTICLE, 'article.id', 'article_category_relation.article_id');
if (roleId == Role.manager) {
qb.where('user_id', userId);
}
qb.orderBy('id', 'desc');
})
.fetch({
withRelated: [{ 'articles': (qb: QueryBuilder) => qb.where('user_id', userId) }]
}));