收藏
回答

云函数这种嵌套数据库查询该怎么解决?如果不用promise返回null,我这样写又会报错

const cloud = require('wx-server-sdk')
cloud.init()
exports.main = async (event, context) => {
       const db = cloud.database(),
              user = db.collection('user'),
              _ = db.command
       var userdata = event.userdata
       var openid = cloud.getWXContext().OPENID
       var time = new Date()
       userdata.create_time = time
       return new Promise((resolve, reject) => {
              user.add({
                     data: userdata
              }).then(r => {
                     resolve(r)
                     user.where({
                            _openid: openid
                     }).get().then(e => {
                            userdata = e.data[0]
                            user.where(_.or({
                                   create_time: _.lt(time),
                                   openid: userdata._openid
                            })).count().then(s => {
                                   userdata.uid = s.total + 1
                                   user.doc(userdata._id).update({
                                          data: userdata
                                   }).then(res => {
                                          resolve(userdata)
                                   })
                            })
                     })
              }).catch(err => {
                     reject(err)
              })
       })}
回答关注问题邀请回答
收藏

2 个回答

  • xplee
    xplee
    发表于小程序端
    2021-07-09

    这么多层地狱,分成几个小方法,分别用promise,async wait

    2021-07-09
    有用
    回复
  • 老张
    老张
    2021-07-09

    user.add天生支持promise,不需要再new promise了;

    直接await user.add即可。

    2021-07-09
    有用
    回复
登录 后发表内容