收藏
回答

云开发的inc操作符,如果字段不存在,会发生什么? 请求官方给一个确定的回答,好进行代码实现

场景: 假设有数据表,user,当用户登录时,要让其登陆次数自增加 1, 于是使用操作符 _.inc(1)

问题: 如果该字段之前没有,那么会发生什么? 官方文档并没有介绍. 实际运行的话, 是创建字段,并从0自增加到1

请问官方: 使用inc操作符,如果字段不存在,能否给出一个官方的确定的行为: 抛异常, 0到1, 或者其他等等

有确定的预期,方便进行代码实现(好决定是否在操作前作诸如字段存在与否的检测) .

最后一次编辑于  2021-07-20
回答关注问题邀请回答
收藏

3 个回答

  • 星驰Dai
    星驰Dai
    2023-04-30

    我也认为官方应该明确这种corner case的情况。感谢楼主的严谨。

    2023-04-30
    有用
    回复
  • 老张
    老张
    2021-07-20

    你是想帮官方完善文档,还是想知道inc的结果?

    如果是前者,那等官方知道后改善吧。

    如果是后者,在控制台里执行一下xxx:_.inc(1)即可。

    我就不帮你验证了。

    2021-07-20
    有用
    回复 3
    • 雪线
      雪线
      2021-07-20
      两者皆有. 
      前者我希望官方在文档有明确说明,说明没有初始值会发生什么也是符合惯例吧.
      后者我验证过了,赋值0,然后自增加1(这个赋值非常满意)
      2021-07-20
      回复
    • 老张
      老张
      2021-07-20回复雪线
      还真不太能理解你们的脑回路。我第一眼看到inc这个操作,基本从不看它的文档,就知道肯定一定,肯定,必然是空字段直接加1。从来没想过它还有会有什么别的结果。
      2021-07-20
      回复
    • 雪线
      雪线
      2021-07-20回复老张
      我的第一反应和你一样. 不过官方没有说明,这么用多了,总归不安心,万一那天改了

      monggo的inc文档就有如下这句话:
      If the field does not exist, $inc creates the field and sets the field to the specified value.
      2021-07-20
      回复
  • Mr.Zhao
    Mr.Zhao
    2021-07-20

    https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-sdk-api/database/command/Command.exists.html

    2021-07-20
    有用
    回复 22
    • 雪线
      雪线
      2021-07-20
      你的链接是Command.exists操作符,不是inc操作符,不明白你要表达啥

      你是说更新前先用exists确认一遍吗?
      2021-07-20
      1
      回复
    • Mr.Zhao
      Mr.Zhao
      2021-07-20回复雪线
      是啊  先确认下呗
      2021-07-20
      回复
    • Mr.Zhao
      Mr.Zhao
      2021-07-20回复雪线
      你说话就是前后矛盾,知道了还要问
      2021-07-20
      回复
    • Mr.Zhao
      Mr.Zhao
      2021-07-20回复雪线
      云开发得给你定制一下
      2021-07-20
      回复
    • 雪线
      雪线
      2021-07-20回复Mr.Zhao
      这样也不是不可以,但是有两个缺点:
       1、增加了执行的时间, 同时降低了并发数量)
      2、本来一次update就搞定的事情,要变成两次,浪费数据库读次数,使用到inc的地方很多的,而确认是否存在其实只需要一次,无形中增加了很多数据库读的次数, 费钱
      2021-07-20
      回复
    查看更多(17)
登录 后发表内容