用事务处理向数据库添加数据,无法添加_openid字段?
发布于 6 年前 作者 nayao 7462 次浏览 来自 问答

因为涉及到更新两个相关联的表,所以要用到事务处理。先看代码:

const transaction = await db.startTransaction()

const res1 =await transaction.collection(‘orderEvaluate’).add({

data: {

orderID: event.orderID,

__ // _openid: openid,__ //这里使用_openid作为字段名保存openid时,数据库中不会保存这个字段,

__openid:openid, __ //但是用openid作为字段名保存openid时,数据库中就正常保存了。 仅仅是一个下划线的区别,为什么结果不一样?

publishDate: newDate(),

productID: event.productID,

grade: event.grade,

content: event.content

}

});

const res2 =await transaction.collection(‘order’).doc(event.orderID).update({

data: {

status: 2

},

})

 

if(res1._id !=null && res2.stats.updated>){

await transaction.commit()

return {

success: true

result_1: res1,

result_2: res2

}

}else

await transaction.rollback()

return {

success: false

result_1: res1,

result_2: res2

}

}

这里使用_openid作为字段名保存openid时,数据库中不会保存这个字段,但是用openid作为字段名保存openid时,数据库中就正常保存了。 仅仅是一个下划线的区别,为什么结果不一样?

4 回复

泻药,云数据库我这没有做过,跟你讲不了为什么。

不过,我用过mysql ,mysql数据里是有很多的保留字段的,比如select、from、delete、key。。。等等等等很多单词作为关键词的,为了不与数据库冲突和明确记录每个字段,我们在设计表格字段的时候,可以两个单词做为字段名,比如用户表里边的字段可以起名userOpenid,userName,userNickname,userHeadpic之类的。

最好不要用单纯的一个单词,以免出现各种意想不到的bug

不用事物是可以添加的,用事物就不知道了。。。

_openid是保留的字段,不可以自行设置这个值

谢邀,对云数据库不熟悉,帮不了你

回到顶部