我有一个云函数,目的就是将名为`event.database_collection_name`的collection中一组指定id的数据中liked字段加一,代码如下:
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init({
env: 'my_env'
})
const db = cloud.database({
env: 'my_env'
})
// 云函数入口函数
exports.main = async(event, context) => {
// console.log(event.database_collection_name)
// console.log(event.ids) 这里确保输入的正确性
const _ = db.command
db.collection(event.database_collection_name).where({
_id: _.in(event.ids)
}).update({
data: {
liked: _.inc(-1)
},
success: function (res) {
console.log(res)
},
fail: function (e) {
console.log(e)
}
})
}
者这个函数在本地调试时能够正常生效,同样的测试数据,云端测试结果返回OK但是数据库中数据没有改变。
同样一个函数,我用一个循环代替db.command.in,代码如下:
// 云函数入口文件 const cloud = require('wx-server-sdk') cloud.init({ env: 'my_env' }) const db = cloud.database({ env: 'my_env' }) // 云函数入口函数 exports.main = async(event, context) => { const _ = db.command for(let i = 0,len = event.ids.length;i < len;i++) { var res = await db.collection(event.database_collection_name).doc(event.ids[i]).update({ data: { liked: _.inc(1) } }) console.log(res) } }
就能正常生效了,但是云函数的预算时间(即计费时间从十几ms上升到了70ms)