db.command.in云调用在本地生效在云上不生效?
发布于 6 年前 作者 gongping 11275 次浏览 来自 问答

我有一个云函数,目的就是将名为`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但是数据库中数据没有改变。

1 回复

同样一个函数,我用一个循环代替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)

回到顶部