db.command.in在云函数中不能正常生效
发布于 7 年前 作者 ping84 14316 次浏览 来自 问答

我希望结合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未生效,麻烦执教

1 回复

谢邀,云开发不熟悉

回到顶部