使用云开发做了个帖子功能,列表数据可以查询出来,但列表里每条帖子的点赞数、评论数等数据不知道怎么查询出来,以下是相关代码:
点赞数虽然获取到,但显然不理想;评论数也不希望用这种方法,而且数据如果太多查询就更慢了,还有是否已点赞的判断,不想通过查到的list遍历;
大家是否有更好的方法呢,请赐教
db.collection('post').aggregate()
// 条件
.match({
cId: cId
})
// 联表查发帖人
.lookup({
from: 'user',
localField: 'creatorId',
foreignField: '_id',
as: 'creators',
})
// 联表查点赞列表,再用length替换成likeCount
.lookup({
from: 'like_post',
localField: '_id',
foreignField: 'postId',
as: 'likeCount',
})
// 联表查评论条数(未实现)
// 查询自己是否点赞了(未实现)
// 创建时间倒序
.sort({
createdTime: -1
})
// 分页
.limit(limit)
.skip(skip)
.end()
.then(res => {
console.log("连表查询结果:" + JSON.stringify(res))
// 返回结果
const results = res.list
results.map((obj, idx) => {
results[idx].canEdit = wxContext.OPENID === obj._openid
results[idx].likeCount = results[idx].likeCount.length
results[idx].commentCount = 0
})
return {
total: total,
data: results
}
})
.catch(err => console.error(err))
只能合表了。