云函数实现两表联合查询返回一个结果?
发布于 5 年前 作者 juan42 414 次浏览 来自 官方Issues

// 云函数入口函数

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 去查找用户表的中信息。并且返回一个集合,里面包含两表中的数据。

3 回复

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

试试吧

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

}

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

回到顶部