收藏
回答

请问可以使用变量来代替几段key去获取data的值吗?

小弟在页面内定义了一个内部函数,希望每次调用的时候传入不同的“pram”值,去云函数数据库里查询键值为“pram”的值,比如 传入 pram = 'room[0].pic' ,希望能读出数据库中 res.data.room[0].pic的值,但程序像下面这样写的话,没能成功,应该怎么写才行呢?


Page({

    //定义了一个页面内部函数,  

    _record( pram ) {

    db.collection('info').where({ OpenID: OpenID}).get().then(res => {

    console.log("读出数据库中键值为动态传过来的pram数据", res.data[pram])

    })

    },

    //调用_record函数,传入 pram = 'room[0].pic',希望能获得 res.data.room[0].pic 的值,但是不成功

    this._record('room[0].pic');

})


最后一次编辑于  2019-09-16
回答关注问题邀请回答
收藏

2 个回答

  • o0o有脾气的酸奶
    o0o有脾气的酸奶
    2019-10-17

    _record(pram) {

        db.collection('info').where({ OpenID: OpenID }).get().then(res => {

            var ret = res.data, keys = typeof pram == 'string' ? pram.replace(/((\]\.)|\[)/g, '.').split('.') : []

            for (var i in keys) {

                var k = keys[i]

                if (ret.hasOwnProperty(k)) {

                    ret = ret[k]

                } else {

                    break

                }

            }

            console.log("读出数据库中键值为动态传过来的pram数据", ret)

        })

    }

    =============

     this._record('room[0].pic');

    2019-10-17
    有用 1
    回复
  • 祺爸💎
    祺爸💎
    2019-09-16


    2019-09-16
    有用 1
    回复 3
    • low B
      low B
      2019-09-16
      感谢老大专门写了段程序验证,现在我传了一个带 [ ]的参数进去,传入 pram = 'room[0].pic' ,如果是单独的 room和pic,直接用[]括起来就可以了,但是传传入 room[0] 和 pic 还是有点问题呢。再帮我看看呢,老大
      2019-09-16
      回复
    • low B
      low B
      2019-09-16
      刚试了,用 'room.0.pic' 这种写法才行,可以读出数组 room[0]中pic的值。
      2019-09-16
      回复
    • 庄国栋
      庄国栋
      2022-05-23回复low B
      [`str_${var}`] 这种写法
      2022-05-23
      回复
登录 后发表内容
问题标签