【笔记】云开发用户存在更新,不存在新增
发布于 4 年前 作者 qiang61 3749 次浏览 来自 分享

方案一 :如果这个表里只存userInfo的信息,将_id值设置为OPENID,直接使用set覆盖,最简单。

if (!userInfo) {
    console.log('无用户信息,更新失败')
  }else{
  db.collection('user').doc(OPENID).set({
    data: userInfo
  }).then(e => {
    console.log('用户数据更新成功', e)
  })
}

方案二:如果用户表中存了其他字段,需要实现存在更新,不存在插入,可以先查询,再判断处理。

async function updateUser () {
  let chk = await db.collection('user').where({ _openid: OPENID }).get()
  if (chk.data.length) {
    // 存在记录,更新
    await db.collection('user').where({ _openid: OPENID }).update(userInfo)
  } else {
    // 不存在,新增
    await db.collection('user').add(userInfo)
  }
}

方案三:将_id直接设置为openid,然后利用查不到指定_id会报错的特性,在catch里填写更新语句,这样可以少执行一次查询操作。

let userInfo = event.userInfo
userInfo.lastTime = db.serverDate() //最后更新时间

db.collection('user').doc(OPENID).update({
  data: userInfo
}).catch(err => {
  //用户不存在则新增
  userInfo._id = OPENID //设置OPENID为_id
  userInfo.createTime = db.serverDate() //添加创建时间  
  db.collection('user').add({
    data: userInfo
  })
})
1 回复

谢谢!!!!!

回到顶部