Bookshelf.js 与相关的 TypeScript 错误

问题描述

因此,在我的应用程序中,我有相互关联的类别文章。起初,我检索所有类别,每个类别中都有文章。问题是我想通过 userId 过滤其中的 categoriesarticles 但我不知道该怎么做,因为我正在使用 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)}]
      }));

例如,如果 userId1,则只想获取那些 categories,其中包含 id 为 {{1} 的用户撰写的文章 }.此外,并非所有文章,而是仅由 ID 为 1用户撰写。

我在 1 附近有 TS 错误withRelated

在这种情况下,您能否帮助我使用 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) }]
      }));