收藏
回答

云函数实现两表联合查询返回一个结果?

// 云函数入口函数

exports.main = async (event, context) => {

const wxContext = cloud.getWXContext()

return db.collection('information')

.where({

audit: event.audit

}).orderBy('adddatetime','desc')

.skip(event.m) // 跳过结果集中的前 10 条,从第 11 条开始返回

.limit(event.n) // 限制返回数量为 10 条

.get()

.then(res => {

for(let i = 0 ;i<res.result.data.lenght;i++){

return db.collection('user').where({

_openid: res.result.data[i]._openid

}).get().then(re => {

console.log(re);

res.result.data[i].avatarUrl=re.data.avatarUrl;

res.result.data[i].nickName = re.data.nickName

res.result.data[i].phone = re.data.phone

}).catch(er => {

console.error(er)

return er

})

}

return res

})

.catch(err => {

console.error(err)

return err

})

}

怎么实现多表联合查询,在以往的数据库中利用left join 就可以实现。但是现在是访问信息表里面有Openid 去查找用户表的中信息。并且返回一个集合,里面包含两表中的数据。

最后一次编辑于  09-19
回答关注问题邀请回答
收藏

3 个回答

  • o0o有脾气的酸奶
    o0o有脾气的酸奶
    09-18

    试试吧

    for (let i = 0; i < res.result.data.lenght; i++) {

        var user = await db.collection('user').where({

            _openid: res.result.data[i]._openid

        }).get()

        console.log(user)

        res.result.data[i].avatarUrl = user.data.avatarUrl;

        res.result.data[i].nickName = user.data.nickName

        res.result.data[i].phone = user.data.phone

    }


    09-18
    赞同
    回复 1
    • 回忆
      回忆
      09-19
      好的好的,谢谢您。
      09-19
      回复
  • Charb
    Charb
    09-18


    这是个异步操作,return的时候第二次查询还没结果呢

    09-18
    赞同
    回复 1
    • 回忆
      回忆
      09-19
      原来是异步的 卧槽 我说怎么没看到输出的结果呢。 感谢大哥
      09-19
      回复
  • 回忆
    回忆
    09-18

    目前的疑惑是如何往返回的结果集中循环遍历然后填装一个新字段

    09-18
    赞同
    回复
问题标签