I have a posts
resolver which uses this logic to return posts:
const qb = Post.createQueryBuilder('post')
.select(['post.id AS id', 'post.createdAt AS id'])
.addSelect(
"json_build_object('id', user.id, 'username', user.username, 'email', user.email, 'createdAt', user.createdAt, 'updatedAt', user.updatedAt)",
'creator'
)
if (req.session.userId)
qb.addSelect((qb) => {
return qb
.subQuery()
.select('updoot.value')
.from(Updoot, 'updoot')
.where('"userId" = :userId AND "postId" = post.id', {
userId: req.session.userId
})
}, 'voteStatus')
else qb.addSelect('null', 'voteStatus')
qb.innerJoin('post.creator', 'user')
.orderBy('post.createdAt', 'DESC')
.take(realLimitPlusOne)
if (cursor)
qb.where('post.createdAt < :cursor', {
cursor: new Date(parseInt(cursor))
})
qb.printSql()
const posts = await qb.getRawAndEntities()
console.log('posts: ', posts['raw'][0])
return {
posts: posts['raw'].slice(0, realLimit),
hasMore: posts['raw'].length === realLimitPlusOne
}
I want my data to be structured in this way:
posts: {
id: 29,
createdAt: 2023-02-07T06:53:39.453Z,
creator: {
id: 44,
username: 'prashant',
email: '[email protected]',
createdAt: '2023-02-06T13:02:11.717504',
updatedAt: '2023-02-06T13:02:11.717504'
},
voteStatus: -1
}
But instead of id
and createdAt
I get post_id
and post_createdAt
key names which is not compatible with my graphql types. Even though I added the aliases for these columns I am getting:
posts: {
post_id: 29,
post_createdAt: 2023-02-07T06:53:39.453Z,
creator: {
id: 44,
username: 'prashant',
email: '[email protected]',
createdAt: '2023-02-06T13:02:11.717504',
updatedAt: '2023-02-06T13:02:11.717504'
},
voteStatus: -1
}
Is there any problem with my code or should I create a mapping function which key names to appropriate ones?
I also had a "Column 'distinctAlias._id' does not exist" error. It was because I was not selecting the id in the query. So it is not that the key names are not compatible, but that it has to allways select the id of an item and you are not selecting it.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With