Javascript TypeForm:无法读取属性';数据库名称';尝试按loadRelationCountAndMap之后创建的字段排序时的未定义字段

Javascript TypeForm:无法读取属性';数据库名称';尝试按loadRelationCountAndMap之后创建的字段排序时的未定义字段,javascript,typescript,sql-order-by,nestjs,typeorm,Javascript,Typescript,Sql Order By,Nestjs,Typeorm,我正在尝试统计帖子的浏览量,然后按浏览量排序 这是我尝试计数的代码部分。Alias.views是一个对象数组。据我所知,alias.ViewScont应该是一个数字 qb.loadRelationCountAndMap('alias.commentsCount','alias.comments'); qb.loadRelationCountAndMap('alias.votesCount','alias.votters'); qb.loadRelationCountAndMap('alias.v

我正在尝试统计帖子的浏览量,然后按浏览量排序

这是我尝试计数的代码部分。Alias.views是一个对象数组。据我所知,alias.ViewScont应该是一个数字

qb.loadRelationCountAndMap('alias.commentsCount','alias.comments');
qb.loadRelationCountAndMap('alias.votesCount','alias.votters');
qb.loadRelationCountAndMap('alias.viewsCount','alias.views');
qb.loadRelationCountAndMap('alias.sharesCount','alias.distributors');
qb.orderBy('alias.viewscont','DESC');
但我经常会收到以下错误(日志):

public async findMany(请求:请求,用户ID?:编号):承诺{
返回getManager().transaction(异步entityManager=>{
常量过滤器:IPostFeedQuery=request.query;
const qb=entityManager.createQueryBuilder(PostEntity,'alias');
qb.leftJoin('alias.author','author')
.addSelect(['author.id','author.firstName','author.lastName','author.pictureUrl']);
其中('alias.status IN(:…status)'{
状态:[PostStatus.PUBLISHED,
…(filter.userId&&userId&&filter.userId==userId?[PostStatus.IN_REVIEW]:[])]
});
qb.leftJoinAndSelect('alias.category','category');
if(filter.userId){
andWhere('author.id=:authord',{authord:filter.userId});
}
如果(过滤器类别){
andWhere('category.slug=:category',{category:filter.category});
}
if(filter.type){
andWhere('alias.type=:type',{type:filter.type});
}否则{
andWhere('alias.type:ignoredType',{ignoredType:PostType.FORUM_TOPIC});
}
if(filter.tag){
qb.leftJoin('alias.tags','tags'))
.andWhere('tags.slug=:tag',{tag:filter.tag});
}
qb.loadRelationCountAndMap('alias.commentsCount','alias.comments');
qb.loadRelationCountAndMap('alias.votesCount','alias.votters');
qb.loadRelationCountAndMap('alias.viewsCount','alias.views');
qb.loadRelationCountAndMap('alias.sharesCount','alias.distributors');
qb.orderBy('alias.viewscont','DESC');
如果(用户ID){
qb.leftJoin(
“别名,选民”,
“选民”,
'voctors.id=:userId',{userId}).addSelect(['voctors.id']);
qb.leftJoin(
“alias.reports”,
"报告",,
'reports.reporter=:userId',{userId}).addSelect(['reports.createdAt']);
qb.leftJoin(
'别名.分销商',
“分销商”,
'distributors.id=:userId',{userId}).addSelect(['distributors.id']);
}
const data=wait this.apiService.setPagination(请求,qb);
返回data.map(value=>newfeeddto(value));
});
}

对不起,代码太多了,谢谢你的帮助。

Hi@afishr,我想澄清一件事,你的
PostEntity
类声明行上方有
@Entity()
装饰程序吗?@a.Maitre是的,我只是没有包括它。你找到答案了吗?我试图按
loadRelationCountAndMap
中的一个排序,但它也不起作用。@LeonardoEmilioDominguez我必须在project中更改这件事的逻辑,这样我就不必再按此字段排序了。但在此之前,我找到了一个解决方案:只使用子查询而不是loadRealationCountAndMap。这就像在子查询中进行计数,然后您可以根据结果进行排序。希望它能帮助你:)@afishr你能分享你的代码吗?谢谢
query: START TRANSACTION
query: SELECT "category"."id" AS "category_id", "category"."name" AS "category_name", "category"."slug" AS "category_slug" FROM "app_post_category" "category" INNER JOIN "app_post_category_post_type" "category_postTypes" ON "category_postTypes"."post_category_id"="category"."id" INNER JOIN "app_post_type" "postTypes" ON "postTypes"."id"="category_postTypes"."post_type_id" AND ("postTypes"."post_type" IN ($1, $2)) -- PARAMETERS: ["POST","ARTICLE"]
query: ROLLBACK
query: START TRANSACTION
[Nest] 923   - 05/30/2019, 4:47 PM   [ExceptionsHandler] Cannot read property 'databaseName' of undefined +21439ms
TypeError: Cannot read property 'databaseName' of undefined
    at /usr/src/app/src/query-builder/SelectQueryBuilder.ts:1866:145
    at Array.map (<anonymous>)
    at SelectQueryBuilder.createOrderByCombinedWithSelectExpression (/usr/src/app/src/query-builder/SelectQueryBuilder.ts:1861:14)
    at SelectQueryBuilder.<anonymous> (/usr/src/app/src/query-builder/SelectQueryBuilder.ts:1779:46)

    at step (/usr/src/app/node_modules/tslib/tslib.js:133:27)
    at Object.next (/usr/src/app/node_modules/tslib/tslib.js:114:57)
    at /usr/src/app/node_modules/tslib/tslib.js:107:75
    at new Promise (<anonymous>)
    at Object.__awaiter (/usr/src/app/node_modules/tslib/tslib.js:103:16)
    at SelectQueryBuilder.executeEntitiesAndRawResults (/usr/src/app/node_modules/typeorm/query-builder/SelectQueryBuilder.js:1313:24)