我希望结合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未生效,麻烦执教
_id: cloud.database().command.in(event.array)
我这里这样写就可以了
谢邀,云开发不熟悉