云函数事务新增记录中无法生成_openid字段
发布于 4 年前 作者 tianjun 5477 次浏览 来自 官方Issues

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,

    }

  }

}

3 回复

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

回到顶部