收藏
回答

云函数事务新增记录中无法生成_openid字段

框架类型 问题类型 终端类型 AppID 环境ID 基础库版本
小程序 Bug 微信iOS客户端 wx05734ae4a5e39c29 ptstudio-vj93k 2.8.1

1、云函数创建记录时不会自动增加_openid字段,需要在代码中主动增加 _openid字段。(这是不是个bug?)

2、当云函数创建记录时不使用事务,可以通过代码中主动增加 _openid 字段,在生成的记录中增加 _openid 字段

3、 但当云函数创建记录时启用事务时,事务可能执行完成,但数据不完整,缺少代码中主动增加的 _openid 字段

期望:事务中创建记录时能生成 _openid 字段。

复现代码如下:

// 云函数入口文件

const cloud = require('wx-server-sdk')


cloud.init()


const db = cloud.database()

const _ = db.command


// 云函数入口函数

exports.main = async (event, context) => {

  const wxContext = cloud.getWXContext()


  

  try {

    const transaction = await db.startTransaction()

    

    // generate order record

    let trade_no = 'ABCD1234'

    let order = {

      _id: trade_no,

      _openid: wxContext.OPENID, // 创建的记录中无 _openid 字段

      status: 0,

      create_date: new Date(),

      // create_date: db.serverDate(), // 报错:invalid key offset

    }


    await transaction.collection('test').add({ data: order })


    await transaction.commit()


    console.log(`transaction1 succeeded`)


    return {

      success: true,

      state: 3,

    }

    

  } catch (e) {

    console.error(`transaction error`, e)


    return {

      success: false,

      error: e,

    }

  }

}

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

5 个回答

  • 121
    121
    2020-05-18

    这个问题官方在文档里写得很清楚了,_openid是每个用户的独特标识,云函数相当于后台,后台是哪个用户呢?所以云函数创建文档时不会添加_openid

    2020-05-18
    有用 1
    回复
  • 喝着橙汁唱五环
    喝着橙汁唱五环
    2020-03-30

    楼主解决了吗 我也遇到了这个问题 小程序端新增有_openid,云函数端新增就没有

    2020-03-30
    有用
    回复 1
    • 黄雄
      黄雄
      2020-03-31
      没有,换方案了
      2020-03-31
      回复
  • ᥬ[吃瓜]᭄
    ᥬ[吃瓜]᭄
    2020-03-01

    2020-03-01
    有用
    回复 4
    • 黄雄
      黄雄
      2020-03-01
      多谢!不过还是没解决这个云函数事务新增记录中无法生成_openid字段的问题
      2020-03-01
      回复
    • ᥬ[吃瓜]᭄
      ᥬ[吃瓜]᭄
      2020-03-01回复黄雄
      都说的很清楚了,不能够,_openid相当于身份证,不是想改就能改的
      2020-03-01
      回复
    • 黄雄
      黄雄
      2020-03-01
      我没想改。我是需要新增记录时将_openid保存。 我的问题是没法保存。_openid: wxContext.OPENID
      2020-03-01
      回复
    • ᥬ[吃瓜]᭄
      ᥬ[吃瓜]᭄
      2020-03-01回复黄雄
      换个字段名
      2020-03-01
      回复
  • 老张
    老张
    2020-03-01

    云函数相当于管理员,管理员的_openid是什么呢?

    2020-03-01
    有用
    回复
  • 黄雄
    黄雄
    2020-03-01

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