收藏
回答

用事务处理向数据库添加数据,无法添加_openid字段?

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

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时,数据库中就正常保存了。 仅仅是一个下划线的区别,为什么结果不一样?


最后一次编辑于  2019-12-31
回答关注问题邀请回答
收藏

4 个回答

  • Hanks🇨🇳
    Hanks🇨🇳
    01-04

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


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


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

    01-04
    赞同
    回复
  • 兰昊
    兰昊
    01-02

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

    01-02
    赞同
    回复 1
    • 香皮匠
      香皮匠
      01-02
      非也,不用事务处理就可以自己添加_openid的,用事务就添加不了_openid,只能改用其他名字
      01-02
      回复
  • 小心眼~
    小心眼~
    01-02

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

    01-02
    赞同
    回复
  • one for all
    one for all
    01-01

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

    01-01
    赞同
    回复
登录 后发表内容
问题标签