提拉米苏
提拉米苏
  • 发布:2020-12-24 15:54
  • 更新:2020-12-25 16:10
  • 阅读:545

【报Bug】plus.sqlite.selectSql 返回的结果集中field顺序不对

分类:HTML5+

产品分类: HTML5+

HBuilderX版本号: 2.9.8

手机系统: iOS

手机系统版本号: IOS 14

手机厂商: 苹果

手机机型: iphone 11

打包方式: 离线

示例代码:

plus.sqlite.selectSql({
name: 'ttt',
sql: '"select 'aA' aA,'cA' cA,'d' d,'bA' bA,'cc' CC"',
success: function(data){
console.log('selectSql success: '+JSON.stringify(data));
},
fail: function(e){
console.log('selectSql failed: '+JSON.stringify(e));
}
});

操作步骤:

预期结果:

[{aA: "aA", cA: "cA", d: "d", bA: "bA", CC: "cc"}]

实际结果:

[{CC: "cc", aA: "aA", bA: "bA", cA: "cA", d: "d"}]

bug描述:

plus.sqlite.selectSql 执行:

返回的结果集为:

期望返回:

2020-12-24 15:54 负责人:CLP 分享
已邀请:
CLP

CLP

安卓能做到吗

  • 提拉米苏 (作者)

    安卓没测试。

    应该是在查询结果集之后在转jsonobject的时候你们sort了下。

    一般场景下,object中的顺序对于逻辑是没什么影响的。

    但是,比如要动态拼接,将select的field生成脚本的时候,会因为顺序的问题与预期的不一样,会导致和脚本的后半部分无法对应。毕竟写sql的时候,不强制按照select a,b,c这样的顺序来写。

    虽然可以通过手动将select的field 进行 as 别名 进行预处理

    但是如果是底层的方法的话,我觉得你们的接口返回的数据应该和查询是一致的。如果要对查询出来的列重排序,也应该是使用者去处理。

    2020-12-28 16:23

  • CLP

    回复 提拉米苏: 提供一个完整的demo来测试,我估计是原生层给js层的时候,系统自动处理的,原生层的字典是无序的。

    2020-12-28 16:33

  • 提拉米苏 (作者)

    回复 CLP: 应该是的。上传了。

    2020-12-28 16:54

  • CLP

    回复 提拉米苏: 测试下安卓是什么情况

    2020-12-28 18:04

  • CLP

    回复 提拉米苏: 确定了,就是原生层传给js层的时候,因为是字典,而字典是无序的,所以解决不了。只能你自己按照你自己的要求来重新排序

    2020-12-28 18:55

该问题目前已经被锁定, 无法添加新回复