收藏
回答

db.command.in在云函数中不能正常生效

框架类型 问题类型 终端类型 AppID 环境ID 基础库版本
小程序 Bug 微信iOS客户端 wx6d50edbd880f1fe3 ztx-miniprogram 2.10.3[380]

我希望结合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 个回答

登录 后发表内容
问题标签