我做的是发帖功能,在postlis数据集合里包含openid、时间和帖子内容等信息
在首页显示帖子列表的时候,我通过帖子的openid信息在用户表user里面查找对于的用户昵称和头像
代码:先获取到了postlist里面的贴子数据,获取user信息的时候使用了一个for循环
getUser(list){
let that = this
for (let i = 0; i < list.length; i++){
userCollection.where({
_openid: list[i]._openid
}).get().then(res =>{
let old = that.data.userlist
console.log("i",i)
// console.log(res.data)
that.setData({
userlist: old.concat(res.data)
})
// console.log("userlist", that.data.userlist)
})
}
},
问题:for循环返回的顺序是乱的,请问我能用什么方法另userlist获得一个正确的顺序?
异步变同步。
建议在postlist集合里冗余用户昵称和头像
如果不想冗余,可以使用lookup连表获取用户头像
db.collection('postlist').aggregate() .lookup({ from:'user', localField: '_openid',// postlist里的关联字段 foreignField: '_openid',// user里的关联字段 as: 'userInfo' }) .sort({ dotime:-1 }) .end()
若认为该回答有用,给回答者点个[ 有用 ],让答案帮助更多的人
getBlogList: async () => {
await http('demo/list', {
hideLoading: true,
data: {
'a': 'abc'
}
})
.then(res => {
console.log(res)
})
}