如何从SqlDataAdapter中提取数据并将其存储在MobileFirst中的JsonStore集合中

时间:2015-07-07 05:41:42

标签: ibm-mobilefirst jsonstore

我有一个SqlDataAdapter,我希望将它存储在MobileFirst的JsonStore集合中,并以表格形式显示它。我尝试过使用Load()方法,但它不起作用。 这是我的resultSetCollection.js文件

;(function () {

WL.JSONStore.init({
    resultSet : {
        searchFields: {"EMP_NAME":"string","EMP_ID":"integer"}
    }
}, {
    // password : 'PleaseChangeThisPassword'
})

.then(function () {

     return WL.Client.invokeProcedure({
          adapter : 'EmployeeList',
          procedure : 'getEmployeeLists',
          parameters : []
        }); 
})
.then(function (responseFromAdapter) {

     alert('responseFromAdapter:' + JSON.stringify(responseFromAdapter.invocationResult.resultSet));
     var accessor = WL.JSONStore.get('resultSet');
     var data=responseFromAdapter.invocationResult.resultSet;
     var changeOptions = {
                replaceCriteria : ['EMP_ID', 'EMP_NAME'],
                addNew : true,
                markDirty : false
              };

    return accessor.change(data, changeOptions);
})
.then(function (response) {
    console.log(response);
    //Here I want to retrieve the collection and display it in a table
})
.fail(function (errObj) {
    WL.Logger.ctx({pretty: true}).error(errObj);
});

}());

1 个答案:

答案 0 :(得分:0)

来自客户端应用程序的适配器过程请求将在其成功和失败回调中具有响应对象。因此,假设请求是成功的,并且数据是从后端服务器返回的。

让我们假设您已初始化JSONStore并使用集合正确设置。然后,您只需要获取集合并向其添加数据。

以下示例从HTTP适配器请求获取完整响应,并将其原样放入集合中。您当然需要为特定场景创建更好的设置......

请注意,代码未优化和性能或100%正确的逻辑。这只是一个示范流程。

在MobileFirst Platform Foundation 7.0.0.00中测试 的 main.js:

var collectionName = 'mydata';
var collections = {
    mydata : {
        searchFields : {data: 'string'},
    }
};

function wlCommonInit(){
    WL.JSONStore.init(collections).then(
        function() {
            var resourceRequest = new WLResourceRequest("/adapters/myadapter/getStories", WLResourceRequest.GET);
            resourceRequest.send().then(resourceRequestSuccess, resourceRequestFailure);
        }
    );  
}

function resourceRequestSuccess(response) {
    WL.JSONStore.get(collectionName).add(response).then(
        function(){
            WL.Logger.info("successfully added response to collection");
            displayDataFromCollection();
        }, 
        function() {
            alert("failed adding response to collection");
        }
    );
}

function resourceRequestFailure() {
    alert ("failure");
}

如果您希望从JSONStore获取数据并将其显示在HTML中,您可以执行以下操作:

// get a specific item from the stored response and display it in a table
function displayDataFromCollection() {
    WL.JSONStore.get(collectionName).findAll().then(
        function(result) {
            $("#mytable").append("<tr><td>" + result[0].json.responseJSON.rss.channel.title + "</td></tr>");
        }, 
        function() {
            alert ("unable to display collection");
        }
    );
}

index.html 如下所示:

<table id="mytable">
</table>