收藏
回答

云函数使用事务,无法写入_openid字段

框架类型 问题类型 终端类型 AppID 环境ID 基础库版本
小程序 Bug 工具 wxc990b2165022c8d3 test-zpg4i 2.10.2

小程序提供的事务必须在云函数端使用,但是在事务中无法将_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,
      createTimenew 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,使用其他字段来保存的话,后续的业务逻辑需要修改很多地方,希望尽快修复该问题,谢谢!

回答关注问题邀请回答
收藏

3 个回答

  • 布丁达人
    布丁达人
    2022-01-14

    云开发是真的垃圾,再也不会用了

    2022-01-14
    有用
    回复
  • 咕咕咪是只猫
    咕咕咪是只猫
    2020-05-22

    同样遇到db.serverDate()问题

    2020-05-22
    有用
    回复
  •  Amy  是条鱼🐠
    Amy 是条鱼🐠
    2020-04-20

    我也遇到了同样的问题...

    2020-04-20
    有用
    回复 1
    • 冯午杰
      冯午杰
      2020-04-20
      我提这个问题以后,过了段时间测试,openid可以写入了,现在勉强能用。。
      2020-04-20
      回复
登录 后发表内容
问题标签