这个问题涉及到小程序中的唯一标识符,也就是每个用户的openid。即使两个人使用相同的账号登录小程序,他们的openid是不同的。因此,通过openid作为唯一标识符,即可保证两个人的昵称不会重复。

具体实现方式如下:

  1. 用户登录小程序,系统获取用户的openid。
  2. 检查数据库中是否存在该openid,如果不存在,则将该openid插入数据库中,并将用户昵称和openid对应起来。
  3. 如果存在该openid,则直接读取该用户的信息,包括昵称等。
  4. 当用户想要更改昵称时,首先需要获取该用户的openid。
  5. 通过openid找到该用户的昵称,并将其显示在输入框中。
  6. 用户输入新的昵称后,系统根据openid将该昵称更新到数据库中。

示例代码:

// 获取用户信息
const db = wx.cloud.database()
const _ = db.command
const users = db.collection('users')

const openid = wx.getStorageSync('openid')

users.where({ openid: _.eq(openid) }).get({
success: res => {
const userInfo = res.data[0]
// 获取到用户的昵称等信息
console.log(userInfo)
},
fail: err => {
console.error(err)
}
})

// 更新用户昵称
const newNickname = '新的昵称'

users.where({ openid: _.eq(openid) }).update({
data: {
nickname: newNickname
},
success: res => {
console.log('更新成功')
},
fail: err => {
console.error(err)
}
})