Javascript 如何在knex.js中加入大量外来表项?

Javascript 如何在knex.js中加入大量外来表项?,javascript,sql,sqlite,knex.js,Javascript,Sql,Sqlite,Knex.js,我正在使用knex.js构建一个排序查询。我想加入一个外来表条目的计数,并根据这个联接的表计数对结果进行排序 到目前为止,我已经提出了以下代码: async eventsPaginationB2C(limit, after, filter, sort) { const queryBuilder = knex .select( 'e.id as id', 'e.title as title', 'e.description as

我正在使用knex.js构建一个排序查询。我想加入一个外来表条目的计数,并根据这个联接的表计数对结果进行排序

到目前为止,我已经提出了以下代码:

async eventsPaginationB2C(limit, after, filter, sort) {
    const queryBuilder = knex
      .select(
        'e.id as id',
        'e.title as title',
        'e.description as description',
        'e.startDate as startDate',
        'e.endDate as endDate',
        'e.userId as userId',
        'e.username as username',
        'e.status as status',
        'e.lang as lang',
        'e.online as online',
        'e.range as range',
        'e.projectName as projectName',
        'e.repeatingEvent as repeatingEvent',
        'e.ranking as ranking'
      )
      .limit(limit)
      .offset(after)
      .from('event as e')
      .where(function() {
        this.where('status', 'live');
      })
      .where(function() {
        this.where('range', 'global');
      });

if(sort){

if (hasIn(sort, 'likes')) {
        const desc = sort.likes.desc === true ? 'desc' : 'asc';
        queryBuilder
          .join(knex.raw(`(SELECT  *, COUNT(likes.user_id) AS Count FROM likes  WHERE id = likes.event_id )`))
          .orderBy('Count', desc);
      }

}

return queryBuilder;
}


此查询显示结果,但不按“喜欢”排序。此外,将分拣机值从true更改为false不会改变顺序。

您没有正确地引用
作为计数,因此
按“计数”排序将与任何列不匹配

这可能有助于:

knex.raw(`(SELECT  *, COUNT(likes.user_id) AS ?? FROM likes  WHERE id = likes.event_id )`, ['Count'])