根据不同的需求需要对一个数据表中的不同字段进行自增运算,下面是我的代码
云函数:
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)
}
怎么修改能传入到云函数中?
传字符串,云函数里在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
}) : {}
建议前端传过来
{
"property"
:
"PLUG_OK"
,
"size"
: 1
}