收藏
回答

用云开发在写一个帖子功能,请问帖子列表里每条帖子的点赞数、评论数等信息怎么一起查出来呢?

使用云开发做了个帖子功能,列表数据可以查询出来,但列表里每条帖子的点赞数、评论数等数据不知道怎么查询出来,以下是相关代码:

点赞数虽然获取到,但显然不理想;评论数不希望用这种方法,而且数据如果太多查询就更慢了,还有是否已点赞的判断,不想通过查到的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))
回答关注问题邀请回答
收藏

1 个回答

  • 老张
    老张
    1天前

    只能合表了。

    1天前
    有用
    回复 2
登录 后发表内容
问题标签