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)
})
})}
这么多层地狱,分成几个小方法,分别用promise,async wait
user.add天生支持promise,不需要再new promise了;
直接await user.add即可。