收藏
回答

db.command.in云调用在本地生效在云上不生效?

我有一个云函数,目的就是将名为`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 个回答

  • 随性随心
    随性随心
    2020-03-20

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

    2020-03-20
    有用
    回复
登录 后发表内容
问题标签