收藏
回答

for循环请求,数据库返回顺序混乱怎么处理?

我做的是发帖功能,在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获得一个正确的顺序?

回答关注问题邀请回答
收藏

3 个回答

  • 老张
    老张
    2020-05-20

    异步变同步。

    2020-05-20
    有用
    回复
  • o0o有脾气的酸奶
    o0o有脾气的酸奶
    2020-05-20

    建议在postlist集合里冗余用户昵称和头像

    如果不想冗余,可以使用lookup连表获取用户头像

    db.collection('postlist').aggregate()
      .lookup({
        from:'user',
        localField'_openid',// postlist里的关联字段
        foreignField'_openid',// user里的关联字段
        as'userInfo'
      })
      .sort({
        dotime:-1
      })
      .end()
    

    若认为该回答有用,给回答者点个[ 有用 ],让答案帮助更多的人

    2020-05-20
    有用
    回复
  • 刘勇
    刘勇
    2020-05-20

    getBlogList: async () => {

          await http('demo/list', {

              hideLoading: true,

              data: {

                'a': 'abc'

              }

            })

            .then(res => {

              console.log(res)

            })

        }

    2020-05-20
    有用
    回复
登录 后发表内容
问题标签