报错:内容如下,具体什么错看不到。
日志内容 Request ID: 10683c1f-4624-11ec-9cce-064c6fd90d29
执行时间: 308ms内存使用: 25.91 MB
返回结果
{"success":false,"error":{}}
日志
START
docId1 = 18ed0968619274b40573b419494a2a8e, openid1 = od1W_5VaHYLBdCUrmsIbwUjSq26E
docId2 = 18ed0968619274b10573b3df269fb06c, openid2 = od1W_5Wuu0W12WuS0-0gD4jchsew
当前未指定env,将默认使用第一个创建的环境!
当前未指定env,将默认使用第一个创建的环境!
当前未指定env,将默认使用第一个创建的环境!
当前未指定env,将默认使用第一个创建的环境!
当前未指定env,将默认使用第一个创建的环境!
当前未指定env,将默认使用第一个创建的环境!
transaction error {}
REPORT RequestId:10683c1f-4624-11ec-9cce-064c6fd90d29 Duration:308ms Memory:256MB MemUsage:25.910156MB
END
云函数是给两个记录使用事务保证同时更新成功,代码如下:
// 云函数入口文件 const cloud = require('wx-server-sdk') cloud.init() const db = cloud.database({ // 该参数从 wx-server-sdk 1.7.0 开始支持,默认为 true,指定 false 后可使得 doc.get 在找不到记录时不抛出异常 throwOnNotFound: false, }) const _ = db.command // 云函数入口函数 exports.main = async (event, context) => { let docId1 = event.docId1 let openid1 = event.openid1 let docId2 = event.docId2 let openid2 = event.openid2 console.log('docId1 = ' + docId1 + ', openid1 = ' + openid1) console.log('docId2 = ' + docId2 + ', openid2 = ' + openid2) try { const result = await db.runTransaction(async transaction => { const doc1 = await transaction.collection('matchpool').doc(docId1).get() const doc2 = await transaction.collection('matchpool').doc(docId2).get() if (doc1.data && doc2.data) { const updateDoc1Res = await transaction.collection('matchpool').doc(docId1).update({ data: { oppositeDocid: docId2, oppositeOpenid: openid2 } }) const updateDoc2Res = await transaction.collection('matchpool').doc(docId2).update({ data: { oppositeDocid: docId1, oppositeOpenid: openid1 } }) console.log('transaction succeeded', result) // 会作为 runTransaction resolve 的结果返回 return { doc1: doc1, doc2: doc2 } } else { // 会作为 runTransaction reject 的结果出去 await transaction.rollback(-100) } }) return { success: true, doc1: result.doc1, doc2: result.doc2 } } catch (e) { console.error('transaction error', e) return { success: false, error: e } } }