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 } }