收藏
回答

云函数问题请教?

根据不同的需求需要对一个数据表中的不同字段进行自增运算,下面是我的代码


云函数:


const cloud = require('wx-server-sdk')

cloud.init({

env: cloud.DYNAMIC_CURRENT_ENV

})

const db = cloud.database()

const _ = db.command

exports.main = async(event, context) => {

try {

return await db.collection(event.database).doc(event.id).update({

data: event.sql

})

} catch (e) {

console.error(e)

}

}



小程序断调用:


wx.cloud.callFunction({

name: 'updata',

data: {

  database: 'T_PLUG_INDEX',

  id: getres.result.data[0]._id,

  sql: {

PLUG_OK: _.inc(1)

  }

},

success: upres => {

  console.log('[云函数] [updata] 更新成功: ', upres)

},

fail: err => {

  console.error('[云函数] [updata] 更新失败', uperr)

}

 })


想法是:一个更新的云函数保持不变,根据传入的sql值修改需要自增的字段,


小程序中:


 sql: {

       PLUG_OK: _.inc(1)

       }


怎么修改能传入到云函数中?


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

2 个回答

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

    传字符串,云函数里在ev@al(把ev@al里的@去掉

    sql:'{PLUG_OK: _.inc(1)}'

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

    update({

        data: ev@al('('+event.sql+')')

    })


    或者

    sql:[

        {

            field:'PLUG_OK',

            op: 'inc',

            val: 1

        },

        {

            field:'其他字段',

            op: 'inc',

            val: 1

        }

    ]

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

    var update = {}

    for (var i in event.sql){

        var item = event.sql[i]

        if(item.op == 'inc'){

            update[item.field] = _.inc(item.val)

        }

    }

    return JSON.stringify(update) != '' ? await db.collection(event.database).doc(event.id).update({

        data: update

    }) : {}



    11-17
    赞同 1
    回复 1
    • 梦里水乡
      梦里水乡
      11-18
      多谢,按你的方法可以了
      11-18
      回复
  • 李国臣
    李国臣
    11-17

    建议前端传过来

    {
    "property":"PLUG_OK",
    "size": 1
    }
    11-17
    赞同
    回复
问题标签