MobileFirst 适配器:JSON 结果顺序与数据库数据位置的顺序不同
MobileFirst Adapter: JSON result order is different as that of the DB data position
我创建了一个 logintable
,其中包含用户名和密码作为其列。
我已经在 MobilFirst environment
中配置了适配器。调用适配器时,我得到以下输出:
Invocation Result of procedure: 'procedure1' from the MobileFirst Server:
{
"isSuccessful": true,
"resultSet": [
{
"pwd": "Harry123",
"usrname": "Harry"
}
]
}
但在我的数据库中,用户名在前,然后是密码。
我的数据库结构:
usrname varchar(20)
pwd varchar(20)
能否请您告诉我为什么调用结果中数据的顺序或位置不同。
提前致谢!!
适配器将响应转换为 JSON 并将其发送回客户端。
JSON 是 unordered.
这意味着在您的回复中 {a:1,b:2} 与 {b:2,a:1} 完全相同。
这是预期的响应方式。
假设响应如下所示
var result = { "resultSet": [
{"pwd": "Harry123", "usrname": "Harry", "age": 2 },
{"pwd": "wibble", "usrname": "Dave", "age": 64 },
{ "usrname": "Tarsim", "pwd": "2020", "age": 27 }
// many more records here
]};
我们对 "Dave" 的数据感兴趣。我们可以遍历结果集寻找 Dave:
var rs = result.resultSet;
for ( i = 0; i < rs.length; i++) {
if ( rs[i].usrname == "Dave ) {
// do something with rs[i]
}
}
我经常发现我想通过某些字段快速访问记录,例如 usrname,所以我创建了一个映射 - 记住 JavaScript 对象可以被视为关联数组:
var rsMap = {};
var i;
for ( i = 0; i < rs.length; i++) {
rsMap[rs[i].usrname] = rs[i];
}
现在我们可以简单地引用 rsMap[anyUsrName],例如 Dave 的密码:
rsMap["Dave"].pwd;
或塔西姆的年龄:
var name = "Tarsim";
rsMap[name].age
或使用 Harry 的记录:
var name = "Harry";
var record = rsMap[name];
我创建了一个 logintable
,其中包含用户名和密码作为其列。
我已经在 MobilFirst environment
中配置了适配器。调用适配器时,我得到以下输出:
Invocation Result of procedure: 'procedure1' from the MobileFirst Server:
{
"isSuccessful": true,
"resultSet": [
{
"pwd": "Harry123",
"usrname": "Harry"
}
]
}
但在我的数据库中,用户名在前,然后是密码。
我的数据库结构:
usrname varchar(20)
pwd varchar(20)
能否请您告诉我为什么调用结果中数据的顺序或位置不同。
提前致谢!!
适配器将响应转换为 JSON 并将其发送回客户端。
JSON 是 unordered.
这意味着在您的回复中 {a:1,b:2} 与 {b:2,a:1} 完全相同。
这是预期的响应方式。
假设响应如下所示
var result = { "resultSet": [
{"pwd": "Harry123", "usrname": "Harry", "age": 2 },
{"pwd": "wibble", "usrname": "Dave", "age": 64 },
{ "usrname": "Tarsim", "pwd": "2020", "age": 27 }
// many more records here
]};
我们对 "Dave" 的数据感兴趣。我们可以遍历结果集寻找 Dave:
var rs = result.resultSet;
for ( i = 0; i < rs.length; i++) {
if ( rs[i].usrname == "Dave ) {
// do something with rs[i]
}
}
我经常发现我想通过某些字段快速访问记录,例如 usrname,所以我创建了一个映射 - 记住 JavaScript 对象可以被视为关联数组:
var rsMap = {};
var i;
for ( i = 0; i < rs.length; i++) {
rsMap[rs[i].usrname] = rs[i];
}
现在我们可以简单地引用 rsMap[anyUsrName],例如 Dave 的密码:
rsMap["Dave"].pwd;
或塔西姆的年龄:
var name = "Tarsim";
rsMap[name].age
或使用 Harry 的记录:
var name = "Harry";
var record = rsMap[name];