收藏
回答

云函数连表查询问题?-评论功能

场景:评论区

表:一级评论表comments、二级评论表reply、用户表user

问题:现在是根据course来查询对应的一级评论和该一级评论下的二级评论,然后两个表中都有from (来自用户)字段。想根据from字段去联查出该用户的头像、昵称。不知道该怎么实现了....

我目前的代码只能获得这样的结果:

return db
    .collection("comments")
    .aggregate()
    .match({
      course: event.course,
    })
    .lookup({
      from: "user",
      localField: "from",
      foreignField: "_id",
      as: "userInfo",
    })
    .lookup({
      from: 'replies',
      localField: '_id',
      foreignField: 'reply',
      as: 'children',
    })
    .replaceRoot({
      newRoot: $.mergeObjects([$.arrayElemAt(["$userInfo", 0]), "$$ROOT"]),
    })
    .project({
      userInfo: 0,
      city: 0,
      college: 0,
      country: 0,
      gender: 0 ,
      introduction: 0,
      language: 0,
      praised: 0,
      province: 0
    })
    .end({
      success: function (res) {
        return res;
      },
      fail(error) {
        return error;
      },
    });
回答关注问题邀请回答
收藏

1 个回答

  • 老张
    老张
    2022-05-08

    合表吧;lookup超过两级联表的,就表示该合表了。

    course表:

        {
          //其他course字段
          comments: [
            {
              comment: '这是评论',
              avartarUrl,
              nickName,
              openid,
              time,
              replies: [
                {
                  reply: '这是回复',
                  avatarUrl,
                  nickName,
                  openid,
                  time
                }
              ]
            }
          ]
        }
    
    
    2022-05-08
    有用
    回复 3
    • LIjiANgChen🎫
      LIjiANgChen🎫
      2022-05-08
      你的意思是将两个评论表合起来吗。可是这还是解决不了查询用户头像的问题。难点就是reply里的用户和头像没法拿到。
      2022-05-08
      回复
    • 老张
      老张
      2022-05-08回复LIjiANgChen🎫
      哪来的from?
      avatarUrl保存的头像链接,nickName保存昵称,都已经赋值了,还要去哪拿?
      2022-05-08
      回复
    • 老张
      老张
      2022-05-08回复LIjiANgChen🎫
      昵称不固定,难道不是保存当时的昵称吗?当时回复的时候你的昵称是张三,以后你改成李四了,还是显示张三,防止用户一改名,就不知道当时是谁了。
      2022-05-08
      回复
登录 后发表内容