严重bug,云开发云数据库Command.push()的sort参数,多次执行数据结果不一致
发布于 7 年前 作者 jxiong 3952 次浏览 来自 官方Issues

Command.push(values: Object): Command

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

在使用sort参数排序时,意外发现,同样的sort规则,多次执行的数据结果不一致!

一下描述是在开发者工具(stable v1.02.1911180)的云控制平台调试发现的

一、代码:

db.collection('goods')

.doc('c48bd6c8-60f5-4fba-a7de-ddc3407370dd')

.update({

data: {

push: _.push({

each: [],

//position: 2,

//slice:-2,

sort:{

a:-1,

b:-1

},

})

}

})

二、数据集goods(本回只针对 “_id”: “c48bd6c8-60f5-4fba-a7de-ddc3407370dd” 进行了测试发现的问题):

[

  {

"_id": "c48bd6c8-60f5-4fba-a7de-ddc3407370dd",

    "cost": -12,

    "discount": 0.95,

    "price": 100,

    "push": [

      {

        "a": 30,

        "b": 555

      },

      {

        "a": 1300,

        "b": 15

      },

      {

        "a": 1112,

        "b": 11

      },

      {

        "a": 30,

        "b": 5

      },

      {

        "a": 1200,

        "b": 1

      },

      8,

      9,

      1

    ],

    "style": {

      "size": "small"

    }

  },

  {

    "_id": "f37a8787-1efa-4cc3-a74e-f4fa50c43c96",

    "cost": -50,

    "discount": 0.8,

    "price": 1600

  }

]

三、过程如下:

(1)初始设置:

  • sort规则{ a:-1,b:-1 },多次执行相同代码,完成初始化测试准备

  • 数据集goods,在sort规则{ a:-1,b:-1 }情况下,多次执行后的截图如下

(2)开始修改规则进行测试

  • 第1次修改sort规则: { a:-1,b:-1 } 变更为 { a:-1,b:1 },并第1次执行
  • (截图的标注写错了,变化点是 b:-1 --> b:1 )
  • 观察数据变化情况数据按a:-1的规则排序了,并且在a字段排序的基础上,对b字段也正确排序了 【注意:这只是第1次执行,下面有对比】

  • 接上面的sort规则(无变化):  { a:-1,b:1 },并第2次执行

  • 同样的规则,第2次执行后的数据集与第1次没有变化【猜测:{a:-1,b:1} 组合规则不受执行次数影响?

  • 【注意要修改规则了】修改sort规则: { a:-1,b:1 }   变更为  { a:-1,b:-1 },并第1次执行

  • 观察sort规则修改为{a:-1,b:-1},第1次执行后的数据集变化情况【这次符合预期,优先按a:-1排序,其次按b:-1排序

  • 观察sort规则{a:-1,b:-1}(与第1次无变化),第2次执行

  • 观察sort规则{a:-1,b:-1}(与第1次无变化),第2次执行后的数据集变化情况【这回按完全b:-1规则排序的,(测试数据有限)a:-1不知道有没有起作用

  • 观察sort规则{a:-1,b:-1}(与第1次无变化),第3次执行

  • 观察sort规则{a:-1,b:-1}(与第1次无变化),第3次执行后的数据集变化情况【排序与第2次一样

四、测试小结

我崩溃了,迷茫了,能不用就先别用这个API参数了,慎用慎用慎用!!!

大胆自信一下,修改sort规则后的第一次排序是正确的,但千万别#¥%……&*(*&脑子短路了不知道什么时候又执行了1次。。。

恳请官方重视以上反馈!

1 回复

写测试过程实在辛苦,还有个更不好理解的sort规则组合呢

如果你先b后a,{b:-1,a:1}再做上面的测试,

你不崩溃,找我!

回到顶部