云函数问题请教?
发布于 6 年前 作者 oyang 2856 次浏览 来自 官方Issues

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

云函数:

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)

       }

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

2 回复

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

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

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

update({

    data: ev[@al](/user/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

}) : {}

建议前端传过来

{
"property":"PLUG_OK",
"size": 1
}
回到顶部