收藏
回答

请问可以使用变量来代替几段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');

})


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

2 个回答

  • o0o有脾气的酸奶
    o0o有脾气的酸奶
    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');

    10-17
    赞同 1
    回复
  • 祺爸💎
    祺爸💎
    09-16


    09-16
    赞同 1
    回复 2
    • low B
      low B
      09-16
      感谢老大专门写了段程序验证,现在我传了一个带 [ ]的参数进去,传入 pram = 'room[0].pic' ,如果是单独的 room和pic,直接用[]括起来就可以了,但是传传入 room[0] 和 pic 还是有点问题呢。再帮我看看呢,老大
      09-16
      回复
    • low B
      low B
      09-16
      刚试了,用 'room.0.pic' 这种写法才行,可以读出数组 room[0]中pic的值。
      09-16
      回复
问题标签