收藏
回答

云开发可控制台->导入数据库->冲突处理模式,不太理解 Upsert 含义,怎么理解记录存在则更新?

拿数据做了一下导入数据库功能的测试,目前 "导入数据库" 中的 "冲突处理模式" Upsert 有含糊的地方,不太明白"Upsert:如果记录存在则更新,否则插入记录",怎么算 "如果记录存在"???

现在的冲入处理模式的处理方式应该是以 "_id" 作为一个唯一标识来判断记录是否存在,但这样子的功能还不太够,"_id" 这个字段只有导出后再导入的时候才会有这个字段。

需求场景:我有一批订单数据需要往云开发的数据库里面进行导入,第一次我进行导入新增了所有的记录没有问题,隔了一段时间后,订单数据发生了改变,新的这一批订单数据当中有之前导入的部分数据,也有新的订单数据。此时导入就会存在问题,无论是按照 "Insert",还是按照 "Upsert"来导入都会有问题,之前导入的部分数据是没有 "_id" 这个字段的,所以按照 "Upsert" 导入也是新增所有的数据。 但在这样的需求场景下导入是由问题的,一个订单数据被新增了两条数据。

希望能够提供的方案: 在数据库导入,冲突处理模式 的 "Upsert" 可以按照自定义的业务字段来进行导入,"Upsert" 导入时,如果记录当中存在自定义字段的"业务编号",则进行更新,否则插入新记录。

这一点对于数据导入数据库来说很重要,要根据自己业务编号(保证唯一)来进行 Upsert。

回答关注问题邀请回答
收藏

1 个回答

  • 他乡之客
    他乡之客
    2020-12-17

    您好,目前仅能以_id作为唯一键进行upSert的判断。

    您是否可以考虑在原有数据中,将您所依赖的唯一键字段转换为_id,即可进行导入

    2020-12-17
    有用 2
    回复 1
    • 程序员二师兄
      程序员二师兄
      发表于移动端
      2020-12-17
      感谢回答,这是一个好的思路,我应该早就想到的。 在规则内行事,灵活运用规则,而不是创造规则。 非常感谢🙏
      2020-12-17
      回复
登录 后发表内容
问题标签