收藏
回答

小程序如何根据openid查询数据库?

想设计的内容是,根据openid返回数据库用户列表集合中对应的一条信息

但是实际返回了全部的。

自己排查的时候

在let _openid = res.result.openid后面追加了console.log("userid",_openid)之后只显示有我的openid

但是下面db.collection.where.get还是返回了云数据库全部的内容(每条openid都不一样)

试着把where里面的openid:this.data._openid改成具体的一个id就可以返回那个openid的那条内容

应该是this.data._openid 出了问题但我是小白不会改

有大大能帮我看一下吗

// pages/mypage/mypage.js

const app = getApp()
// 设置数据库
const db = wx.cloud.database()
let that = this
Page({
  /**
   * 页面的初始数据
   */
  data: {
    user_info:[],
    queryResultname: '',
    queryResultsex: '',
    queryResultbirthday: '',
    queryResultposition: '',
    queryResultintro: '',
    queryResulttel: '',
  },
  
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function () {
    // 从云端获取个人信息
    wx.cloud.callFunction({
      name: "getopenid",
       success(res){
      // 授权用户的openid
      let _openid = res.result.openid
      }
     })
    // 查询当前用户所有的 counters
    db.collection('user_info').where({
      openid: this.data._openid
    })
    .get({
      success: res => {
        this.setData({
          queryResultname: JSON.stringify(res.data[0].name, null0).replace("\"","").replace("\"",""),
          queryResultsex: JSON.stringify(res.data[0].sex, null0).replace("\"","").replace("\"",""),
          queryResultbirthday: JSON.stringify(res.data[0].birthday, null0).replace("\"","").replace("\"",""),
          queryResultposition: JSON.stringify(res.data[0].position, null0).replace("\"","").replace("\"",""),
          queryResultintro: JSON.stringify(res.data[0].intro, null0).replace("\"","").replace("\"",""),
          queryResulttel: JSON.stringify(res.data[0].tel, null0).replace("\"","").replace("\"",""),
        })
        console.log('[数据库] [查询记录] 成功: ', res)
      },
      fail: err => {
        wx.showToast({
          icon: 'none',
          title: '查询记录失败'
        })
        console.error('[数据库] [查询记录] 失败:', err)
      }
    })
  },

  

回答关注问题邀请回答
收藏

5 个回答

  • brave
    brave
    2021-02-11

    [抠鼻] 数据库表权限设置成仅创建者可读不就行了吗。。。

    2021-02-11
    有用 3
    回复 2
    • 张向航
      张向航
      2021-02-13
      谢谢,设置一下就好了。。
      2021-02-13
      回复
    • 🥳
      🥳
      2021-05-18回复张向航
      那是不是不用写代码直接设置就行了?
      2021-05-18
      回复
  • chenenxian
    chenenxian
    2022-12-11
            // 获取用户的openid
            var that = this;
            wx.cloud.callFunction({
                name'login_get_openid'// 云函数
            }).then(res=>{
                    console.log("云函数调用成功!",res)
                      //抓取数据
                      that.setData({
                        openid:res.result.openid
                      })
                      //将数据缓存到本地
                      wx.setStorage({
                          data:that.data.openid,
                          key:'openid'
                      })
                      //
                      let opid=wx.getStorageSync('openid')
                      console.log(opid)
                    }
                )
            const _ = db.command
            db.collection('login_info').where({
                _openid:wx.getStorageSync('openid')
                })
                .get({
                    successres => {
    
    2022-12-11
    有用 2
    回复
  • 跨商通
    跨商通
    2021-02-11
    在db.collection('user_info').where
    之前console.log一下this.data._openid
    目测为空。
    


    2021-02-11
    有用 1
    回复 2
    • Mr.Yang
      Mr.Yang
      2021-07-05
      我也碰到问题了,为什么这里会是空的啊。我明明通过云函数获得了openid,AppData里面也有openid。
      2021-07-05
      回复
    • chenenxian
      chenenxian
      2022-12-11
      解决了吗
      2022-12-11
      回复
  • yupeng
    yupeng
    2021-11-16

    "openid为空" 是不是由于这条记录,是由当前用户创建的?或者这条记录是在云平台创建的原因呀?

    要不,新建个开发管理员账户?切换其他管理账户,查看非自己openid 的记录?

    ^_^;这可能是个馊主意,哈哈!

    2021-11-16
    有用
    回复
  • 宇哥
    宇哥
    2021-07-25

    同问,openid为空,怎么解决?

    2021-07-25
    有用
    回复 1
    • chenenxian
      chenenxian
      2022-12-11
      解决了吗
      2022-12-11
      回复
登录 后发表内容
问题标签