_id: cloud.database().command.in(event.array) 我这里这样写就可以了
db.command.in在云函数中不能正常生效我希望结合db.command.in和db.command.inc修改一组指定id的collection的某个字段,执行结果返回OK,但是数据库端没有反映。本地调试中发现能够正常生效,云端测试依然不能生效。云函数代码片段如下: // 云函数入口文件 const cloud = require('wx-server-sdk') cloud.init({ env: 'ztx-miniprogram' }) const db = cloud.database({ env: 'ztx-miniprogram' }) // 云函数入口函数 exports.main = async (event, context) => { 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) return res }, fail: function (e) { console.log(e) return e } }) } 多次尝试无果后,用一个for循环代替db.command.in,就能够正常生效了,代码如下: // 云函数入口文件 const cloud = require('wx-server-sdk') cloud.init({ env: 'ztx-miniprogram' }) const db = cloud.database({ env: 'ztx-miniprogram' }) // 云函数入口函数 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) } } 据此认为是由于db.command.in未生效,麻烦执教
2022-05-29