- db.command.in在云函数中不能正常生效
我希望结合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未生效,麻烦执教
2020-03-20 - 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但是数据库中数据没有改变。
2020-03-19