node.js - Bookshelf.js 与相关的 TypeScript 错误
问题描述
因此,在我的应用程序中,我有相互关联的类别和文章。起初我检索所有类别,每个类别中都有文章。问题是我想过滤其中的类别和文章,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 。此外,并非所有文章,但仅由具有 id 的用户编写。1
1
我附近有 TS 错误withRelated
:Type '{ articles: (qb: QueryBuilder) => QueryBuilder<any, any[]>; }' is not assignable to type 'string'.ts(2322)
在这种情况下,您能否帮助我使用 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) }]
}));
推荐阅读
- css - 在 SCSS 中使用数组
- python - Kafka 阅读主题——从头开始
- python - 如何在 request.post 中使用 mock 到外部 api
- python - Python - 连接变量
- javascript - JS模仿选择网页的一部分然后复制到剪贴板
- java - 为什么@Transactional 和@Rollback 不起作用?
- python - 使用 pandas 和 geopy 计算两点之间的距离
- java - 写入字体文件
- python - 无法从另一个 python 文件(在另一个目录中)调用函数
- keras - 将 Tensorflow.js 转换为 Tensorflow keras