数据库
首页 > 数据库> > javascript – IBM Worklight – 无法显示使用SQL适配器检索的数据

javascript – IBM Worklight – 无法显示使用SQL适配器检索的数据

作者:互联网

我试图从数据库中获取数据并在应用程序中显示它.
以下是我的代码. invokation运行良好,但不显示数据.

sqlAdapter-impl.js

var selectStatement = WL.Server.createSQLStatement("select * from studentinfo");

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

sqlAdapter.js

window.$= window.jQuery = WLJQ;

function wlCommonInit() {
    GetEmployeeData();
}

function GetEmployeeData() {
    var invocationData = {
        adapter : 'sqlAdapter',
        procedure : 'getStudentInfos'
    };

    WL.Client.invokeProcedure(invocationData,{
        onSuccess : loadFeedsSuccess,
        onFailure : loadFeedsFailure
    });
}

function loadFeedsSuccess(result){
    WL.Logger.debug("Feed retrieve success");
    busyIndicator.hide();
    if (result.invocationResult.Items.length>0) 
        displayFeeds(result.invocationResult.Items);
    else 
        loadFeedsFailure();
}

function displayFeeds(items){
    var ul = $('#itemsList');
    for (var i = 0; i < items.length; i++) {
        var li = $('<li/>').html(items[i].sid);
        var pubDate = $('<div/>', {'class': 'pubDate'}).html(items[i].sname);
        li.append(pubDate);     
        ul.append(li);
    }
}

sqlAdapter.html

<body id="content" style="display: none;">
    <div id="itemsList"></div>

    <script src="js/initOptions.js"></script>
    <script src="js/sqlAdapter.js"></script>
    <script src="js/messages.js"></script>
</body>

这是我调用该过程的方法

    {
    "isSuccessful": true,
    "resultSet": [
    {
     "sclass": "PUC",
     "sgrade": "A+",
     "sid": "PUC001",
     "sname": "Rohan"
     },
     {
     "sclass": "PUC",
     "sgrade": "A",
     "sid": "PUC002",
     "sname": "Rakesh"
     },
    {
     "sclass": "PUC",
     "sgrade": "C",
     "sid": "PUC003",
     "sname": "Raj"
     },
     {
     "sclass": "PUC",
     "sgrade": "E",
     "sid": "PUC004",
     "sname": "Roman"
      }
      ] 
      }

我只是想把所有这些东西都印在屏幕上

解决方法:

首先,您需要更改“项目”:

if (result.invocationResult.Items.length>0) 
        displayFeeds(result.invocationResult.Items);

到“resultSet”:

if (result.invocationResult.resultSet.length>0) 
        displayFeeds(result.invocationResult.resultSet);

其次,我使用了Worklight提供的worklight_training数据库脚本以及问题中的代码片段.我已将displayFeeds函数更改为:

function displayFeeds(items) {
    var ul = $('#itemsList'), i, li;

    for (i = 0; i < items.length; i += 1) {     
        // Create new <li> element and populate it
        li = $('<li/>').text(item.firstName);   
        // Append the <li> element to the <ul> element
        ul.append(li);      
    }
}

最终结果是显示users表中的firstName值.
然后,您可以再使用JavaScript来显示数据库表中所需的内容…

顺便说一句,正如你所看到的…… Chrome开发者工具中的控制台确实显示了一些东西……你声称它没有.你需要搞清楚.

标签:ibm-mobilefirst,javascript,sql,database,worklight-adapters
来源: https://codeday.me/bug/20191003/1846351.html