小程序
小游戏
企业微信
微信支付
扫描小程序码分享
场景: 假设有数据表,user,当用户登录时,要让其登陆次数自增加 1, 于是使用操作符 _.inc(1)
问题: 如果该字段之前没有,那么会发生什么? 官方文档并没有介绍. 实际运行的话, 是创建字段,并从0自增加到1
请问官方: 使用inc操作符,如果字段不存在,能否给出一个官方的确定的行为: 抛异常, 0到1, 或者其他等等
有确定的预期,方便进行代码实现(好决定是否在操作前作诸如字段存在与否的检测) .
3 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
我也认为官方应该明确这种corner case的情况。感谢楼主的严谨。
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
你是想帮官方完善文档,还是想知道inc的结果?
如果是前者,那等官方知道后改善吧。
如果是后者,在控制台里执行一下xxx:_.inc(1)即可。
我就不帮你验证了。
https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-sdk-api/database/command/Command.exists.html
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
我也认为官方应该明确这种corner case的情况。感谢楼主的严谨。
你是想帮官方完善文档,还是想知道inc的结果?
如果是前者,那等官方知道后改善吧。
如果是后者,在控制台里执行一下xxx:_.inc(1)即可。
我就不帮你验证了。
前者我希望官方在文档有明确说明,说明没有初始值会发生什么也是符合惯例吧.
后者我验证过了,赋值0,然后自增加1(这个赋值非常满意)
monggo的inc文档就有如下这句话:
If the field does not exist, $inc creates the field and sets the field to the specified value.
https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-sdk-api/database/command/Command.exists.html
你是说更新前先用exists确认一遍吗?
1、增加了执行的时间, 同时降低了并发数量)
2、本来一次update就搞定的事情,要变成两次,浪费数据库读次数,使用到inc的地方很多的,而确认是否存在其实只需要一次,无形中增加了很多数据库读的次数, 费钱