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));
}
});

- 发布:2020-12-24 15:54
- 更新:2020-12-25 16:10
- 阅读:665
产品分类: HTML5+
HBuilderX版本号: 2.9.8
手机系统: iOS
手机系统版本号: IOS 14
手机厂商: 苹果
手机机型: iphone 11
打包方式: 离线
示例代码:
操作步骤:
无
无
预期结果:
[{aA: "aA", cA: "cA", d: "d", bA: "bA", CC: "cc"}]
[{aA: "aA", cA: "cA", d: "d", bA: "bA", CC: "cc"}]
实际结果:
[{CC: "cc", aA: "aA", bA: "bA", cA: "cA", d: "d"}]
[{CC: "cc", aA: "aA", bA: "bA", cA: "cA", d: "d"}]
bug描述:
plus.sqlite.selectSql 执行:
返回的结果集为:
期望返回:
提拉米苏 (作者)
安卓没测试。
应该是在查询结果集之后在转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