因为涉及到更新两个相关联的表,所以要用到事务处理。先看代码:
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时,数据库中就正常保存了。 仅仅是一个下划线的区别,为什么结果不一样?
问题解决了吗? 也遇到同样的问题了
泻药,云数据库我这没有做过,跟你讲不了为什么。
不过,我用过mysql ,mysql数据里是有很多的保留字段的,比如select、from、delete、key。。。等等等等很多单词作为关键词的,为了不与数据库冲突和明确记录每个字段,我们在设计表格字段的时候,可以两个单词做为字段名,比如用户表里边的字段可以起名userOpenid,userName,userNickname,userHeadpic之类的。
最好不要用单纯的一个单词,以免出现各种意想不到的bug
_openid是保留的字段,不可以自行设置这个值
不用事物是可以添加的,用事物就不知道了。。。
谢邀,对云数据库不熟悉,帮不了你