29 lines
845 B
JavaScript
29 lines
845 B
JavaScript
const cloud = require('wx-server-sdk')
|
|
|
|
cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV })
|
|
const db = cloud.database()
|
|
|
|
exports.main = async event => {
|
|
const { OPENID } = cloud.getWXContext()
|
|
if (!OPENID) throw new Error('no openid in wx context')
|
|
const patch = event.patch || {}
|
|
delete patch.openid
|
|
delete patch._id
|
|
|
|
const users = await db.collection('users').where({ openid: OPENID }).limit(1).get()
|
|
if (!users.data.length) throw new Error('user not found')
|
|
|
|
// Setting a real avatar means the user has completed WeChat profile authorization
|
|
if (patch.avatarUrl) patch.profileCompleted = true
|
|
|
|
await db.collection('users').doc(users.data[0]._id).update({
|
|
data: {
|
|
...patch,
|
|
updatedAt: Date.now()
|
|
}
|
|
})
|
|
const user = await db.collection('users').doc(users.data[0]._id).get()
|
|
return { user: user.data }
|
|
}
|
|
|