收藏
回答

往云函数里传递对象,对象里的部分数据传不过去?

通过如下两种办法传递对象,都是只有写死的对象里的值传过去了,其他的都传不过去

第二张是云函数调试里显示的最终传递过来的值:


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

2 个回答

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

    不能这么传的



    2019-10-15
    有用
    回复 5
    • Barry Allen🇨🇳
      Barry Allen🇨🇳
      2019-10-15
      那我该怎么传呢,难道只能把这些逻辑都移到云函数,再组成对象吗
      2019-10-15
      回复
    • o0o有脾气的酸奶
      o0o有脾气的酸奶
      2019-10-15回复Barry Allen🇨🇳
      可以穿字符串过去呀,在ev@al,保证在云函数中 _ 也等于 db.command 就行
      var oprateCode = 1, updata = {}
      if (oprateCode == 1) {
        updata['status'] = { type: 'ev@al', code: '_.inc(-1)'}
      } else if (oprateCode == 2) {
        updata['status'] = { type: 'ev@al', code: '_.inc(-2)' }
      } else {
        updata['status'] = { type: 'ev@al', code: '_.inc(-3)' }
      }
      // 其他字段
      updata['xxxxx'] = '111'
      wx.cloud.init()
      wx.cloud.callFunction({
        name:'test4',
        data: {
          update: updata
        },
        success:function(res){
          console.log(res)
        }
      })
      =================================
      // 云函数入口函数
      exports.main = async (event, context) => {
        var d = {}
        for (var i in event.update) {
          var v = event.update[i]
          if (v.type == 'ev@al' && typeof v.code == 'string')
            d[i] = ev@al(v.code)
          else
            d[i] = v
        }
        return await db.collection('counters').where({
          _id:'xx'
        }).update({
          data: d
        })
      }
      2019-10-15
      回复
    • o0o有脾气的酸奶
      o0o有脾气的酸奶
      2019-10-15回复Barry Allen🇨🇳
      上面的代码去掉 ev@al 中的@
      2019-10-15
      1
      回复
    • Barry Allen🇨🇳
      Barry Allen🇨🇳
      2019-10-15
      太好了,完美的答案,正是我想要的,已解决问题。之前没学过前端,全凭自学,望见笑了
      2019-10-15
      回复
    • o0o有脾气的酸奶
      o0o有脾气的酸奶
      2019-10-15回复Barry Allen🇨🇳
      恩我也自学的
      2019-10-15
      回复
  • 老张
    老张
    2019-10-15

    在调用云函数之前构造updateData再log出来看结果,

    2019-10-15
    有用
    回复 3
登录 后发表内容
问题标签