如何在jsonstore Worklight 6.2中以Json格式获取或返回数据库中的值?

时间:2014-09-09 11:40:50

标签: ibm-mobilefirst worklight-adapters jsonstore worklight-security

我编写了Json商店,用于获取添加替换数据库中的删除值。 我已经初始化了集合。就像这个

function wlCommonInit(){
    var collections = {
       Users : {
           searchFields: { Username: 'integer', Password: 'string'}
       },
       adapter:{
           name:'SQL',
           add:'addSQL',
           remove:'deleteSQL',
           replace:'updateSQL',
           load:{
               procedure:'getSQLs',
               params:[],
           }
       }
   };
   WL.JSONStore.init(collections).then(function () {
      alert("Collection is declared");
   });}

   $("#get").bind("click",function(){
       WL.JSONStore.get("Users").load().then(function(res1){
           alert(JSON.stringify(res1));
       });
   });

适配器:

var selectStatement = WL.Server.createSQLStatement("select username, password from test");

function getSQLs(){

return WL.Server.invokeSQLStatement({
    preparedStatement : selectStatement,
    parameters : []
});}

在运行此操作时遇到如下错误:

[wl.jsonstore] {"src":"load","err":18,"msg":"FAILED_TO_LOAD_INITIAL_DATA_FROM_ADAPTER_INVALID_LOAD_OBJ","col":"Users","usr":"jsonstore","doc":{},"res":{}}

您能告诉我如何从数据库返回值以及如何解决此错误。

此致

Sheikh Mohammed Shamnoon

1 个答案:

答案 0 :(得分:1)

您错过了使加载对象无效的加载密钥,就像错误消息所示( FAILED_TO_LOAD_INITIAL_DATA_FROM_ADAPTER_ INVALID_LOAD_OBJ )。

你有:

load:{ procedure:'getSQLs', params:[], }

你应该:

load:{ procedure:'getSQLs', params:[], key: yourLoadKey }

这取决于你的getSQLs过程调用返回的内容,这个键如何适应适配器响应:responseFromAdapter.invocationResult[key]

但是,由于您使用的是v6.2,我建议您避免使用loadpush JSONStore API,并按照文档here处理外部数据。

基于上述文档链接的一些示例代码:

WL.JSONStore.init(collections)

.then(function () {

    alert('init done');

    return WL.Client.invokeProcedure({
      adapter : 'SQL',
      procedure : 'getSQLs',
      parameters : []
    });
})

.then(function (responseFromAdapter) {

    alert('responseFromAdapter:' + JSON.stringify(responseFromAdapter));

    //Look at the responseFromAdapter and call something like
    //WL.JSONStore.get('Users').add(...)
});