我也遇到了同样的问题...
云函数使用事务,无法写入_openid字段小程序提供的事务必须在云函数端使用,但是在事务中无法将_openid写入到集合中去,并且使用db.serverDate()也是会报错的。 复现云函数代码: // 云函数入口文件 const cloud = require('wx-server-sdk') cloud.init() const db = cloud.database() // 云函数入口函数 exports.main = async (event, context) => { const wxContext = cloud.getWXContext() await db.collection('test3').add({ data: { _openid: wxContext.OPENID, createTime: db.serverDate(), name: 'db add' } }) const transaction = await db.startTransaction() await transaction.collection('test3').add({ data: { _openid: wxContext.OPENID, createTime: new Date(), // createTime: db.serverDate(), //报错 invalid key in $date object: offset name: 'transaction add' } }) await transaction.commit() return { event, openid: wxContext.OPENID, appid: wxContext.APPID, unionid: wxContext.UNIONID, } } 这个问题也已经有人遇到了: https://developers.weixin.qq.com/community/develop/doc/0002e4a8f20e38f0a7f9df9c555c00 https://developers.weixin.qq.com/community/develop/doc/00024a5662c38072cbf97ef4e51800 https://developers.weixin.qq.com/community/develop/doc/000eacacd64ae02f8fc9dc67250000 根据上面的回帖,我也试了下自定义安全规则,并将该集合的权限全部给true,然而还是同样问题。 { "read": true, "write": true } 根据文档内容,事务必须在云函数端使用,如果不能写入_openid,使用其他字段来保存的话,后续的业务逻辑需要修改很多地方,希望尽快修复该问题,谢谢!
2020-04-20