1

我创建了一个logintable用户名和密码作为其列。我已经在MobilFirst environment. 调用适配器时,我得到以下输出:

Invocation Result of procedure: 'procedure1' from the MobileFirst Server: 
{
   "isSuccessful": true,
   "resultSet": [
  {
     "pwd": "Harry123",
     "usrname": "Harry"
  }
 ]
}

但在我的数据库中,用户名首先出现,然后是密码。

我的数据库结构:

用户名 varchar(20)

密码 varchar(20)

您能否让我知道为什么数据的顺序或位置在调用结果中会有所不同。

提前致谢!!

4

2 回答 2

2

适配器将响应转换为 JSON 并将其发送回客户端。

JSON 是无序的。
这意味着在您的响应中 {a:1,b:2} 与 {b:2,a:1} 完全相同。

这是响应的预期方式。

于 2015-02-26T15:06:50.177 回答
0

假设响应看起来像这样

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 的结果集:

 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];
于 2015-02-27T08:25:03.713 回答