这三个id都是同一个openid,请问怎么解决
// pages/login/login.js
const defaultAvatarUrl = 'https://mmbiz.qpic.cn/mmbiz/icTdbqWNOwNRna42FI242Lcia07jQodd2FJGIYQfG0LAJGFxM4FbnQP6yfMxBgJ0F3YRqJCJ1aPAK2dQagdusBZg/0'
const app=getApp();
const db=wx.cloud.database();
Page({
data: {
photoUrl:defaultAvatarUrl,
nickName:""
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options){
//去获取当前用户的openid(从云函数中获取)
wx.cloud.callFunction({
name:"getOpenId",
success:function(res){
console.log(res.result.openid);
//去users表查询openid存不存在
let openid=res.result.openid;
db.collection('users').where({
_openid: openid,
})
.get({
success: function(res) {
// res.data 是包含以上定义的两条记录的数组
console.log(res.data);
if(res.data.length>0){//已经注册的用户直接跳转到主页
let user=res.data[0];
app.globalData.cur_user=user;
//跳转到主页
wx.switchTab({
url: '/pages/home/home'
})
}
}
})
}
})
},
onChooseAvatar:function(res) {
console.log(res);
console.log("头像临时Url",res.detail.avatarUrl)
this.setData({photoUrl:res.detail.avatarUrl})
},
//上传头像昵称
loginSys:function(){
let that=this;
//上传到云数据库
wx.cloud.uploadFile({
cloudPath: this.data.nickName+this.data.photoUrl.substring(this.data.photoUrl.lastIndexOf(".")),
filePath: this.data.photoUrl, // 文件路径
success: res => {
// get resource ID
console.log(res.fileID)
//新增用户到users表
let user={
user_nickname:that.data.nickName,
user_photo:res.fileID,
user_regtime:new Date()
}
db.collection('users').add({
// data 字段表示需新增的 JSON 数据
data:user
})
.then(dbres => {
console.log("新增成功",dbres)
//保存当前用户到全局作用域
user._id=dbres._id;
app.globalData.cur_user=user;
//跳转到主页
wx.switchTab({
url: '/pages/home/home'
})
})
},
fail: err=>{
//handle error
}
})
}
})
同一个用户openid是不会发生改变, 根据你图片上给的信息这好像也并不是openid的格式
这个就需要你自己判断带你了,用户存在就不要添加了
你的代码逻辑问题,或者也可以把openid作为_id,在入库的时候使用set方法
判断是同一个用户就不要产生新的id
自己判断一下openid存在不存在,不存在add,存在update