为了账号安全,请及时绑定邮箱和手机立即绑定

使用错误的_openid搜索也能正常返回结果

老师好:

我通过异常的_openid去搜索,也能正常返回,请问是为什么?

// pages/myInfo/myInfo.js

const db = wx.cloud.database();

Page({


/**

  * 页面的初始数据

  */

data: {

    login_user_info:[],

    user_registered:0

},

search_openid: function (openid) {

    //const i = 0;

    db.collection('user').where({

    /* 这里先记录一下,使用错误的openid也能正常返回。 */

    _openid: '111'

}).get().then(ress => {

    console.log("search_openid success.");

    console.log(ress.data);

    if (0 == ress.data.length)

    {

        this.setData({

            login_user_info: [],

            user_registered:0

        });

    }

    if (1 != ress.data.length)

    {

        console.log("too many user get, error");

    }

    else

    {

        this.setData({

            login_user_info:ress.data[0],

            user_registered: 1

        });

    }

}).catch(error => {

    console.log('search_openid failed, error = ');

    console.log(error);

})

},


getOpenId: function () {

    wx.cloud.callFunction({

    name: 'login'

}).then(res => {

    let user_openid_tmp = res.result.openid;

    console.log("getOpenId result = " + user_openid_tmp);

    this.search_openid(user_openid_tmp);

    }).catch(error => {

        console.log(error);

    })

},

/**

  * 生命周期函数--监听页面加载

  */

onLoad: function (options) {

    this.getOpenId();

},


打印值:

{_id: "f1006ad85d221c2502f43b1e4d1e140b", _openid: "owNmp5cYUueEgYrC_oND*********", age: 33, name: "test_name"}


length也等于1。


当数据库存在两个不同_openid的数据时,返回值和上述相同。


user信息是通过如下方式添加的:

insert:function(){

    db.collection('user').add({

        data:{

            name:'test_name',

            age:23

        }

    }).then(res=>{

        console.log(res);

    }).catch(err=>{

        console.log(err);

})

},


正在回答

3 回答

官方是为了安全,所以在小程序端只能操作当前用户自己产生的记录,所在在小程序端不管传入的_openid的值是什么都会返回当前用户的记录。

改成在云函数中查询就可以了,云函数端没有限制。

0 回复 有任何疑惑可以回复我~
#1

今天也要加油压 提问者

确实,改成在云函数搜索就可以啦,谢谢!
2019-08-14 回复 有任何疑惑可以回复我~

正常情况下不会这样。

1、检查开发工具左上角是否有已经登录

2、检查云数据库中数据,认真检查每条数据看是否有问题

3、把查询语句粘贴到云开发控制台中,看是否有问题,具体步骤按照截图中顺序:

https://img1.sycdn.imooc.com//5d50e1c900011dd215100755.jpg

0 回复 有任何疑惑可以回复我~
#1

今天也要加油压 提问者

谢老师,在云开发控制台操作返回结果和你一样,都是空数组。 我的代码全文更新在原问题中了。
2019-08-13 回复 有任何疑惑可以回复我~

因为你当前的授权数据(openid)被缓存了(就是说你先在无论怎样修改授权数据程序实际上识别的都是之前被缓存下来的数据),点击开发工具上方的“清缓存”中的“清除授权数据”,重新操作试一下你就知道了

0 回复 有任何疑惑可以回复我~
#1

今天也要加油压 提问者

点击“清除授权数据”,再重新编译,打印信息还是一样的。
2019-08-13 回复 有任何疑惑可以回复我~
#2

CalmBo 回复 今天也要加油压 提问者

我按照你的问题亲自试验了一下,是可以的。清除缓存之后错误的openid就请求不到数据了,你再好好检查一下
2019-08-15 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
轻松入门微信小程序与云开发
  • 参与学习       64548    人
  • 解答问题       1742    个

深入浅出微信小程序核心基础与云开发,使你掌握小程序开发必备技能。

进入课程

使用错误的_openid搜索也能正常返回结果

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信