如何以编程方式在worklight适配器中传递查询的参数?

时间:2014-07-29 16:54:07

标签: ibm-mobilefirst worklight-adapters

我能够创建一个worklight适配器,部署它并通过手动传递参数来调用它,但是我需要创建一个登录页面,当用户输入凭据时,应用程序应该从中获取他/她的数据表格通过在查询SELECT * FROM USER_ACC_TABLE WHERE USER = ?

的where子句中传递他的用户名

如何以编程方式为worklight适配器中的查询传递参数?

2 个答案:

答案 0 :(得分:1)

如果查看文档,您将看到调用过程包含参数键。在您的情况下,我将使用如图所示的JSON对象。

http://www-01.ibm.com/support/knowledgecenter/SSZH4A_6.2.0/com.ibm.worklight.apiref.doc/html/refjavascript-client/html/WL.Client.html%23invokeProcedure

function invokeAdapter(USERNAME) {

var USERINFO = {username: USERNAME};

var invocationData = {
        adapter: "USER_ACCT_TABLE",
        procedure: "getUserData",
        parameters:[USERINFO]
};
// DEFINE THE CALL BACK FUNCTIONS
var options = {
        onSuccess: onSuccess,
        onFailure: onFailure 
};

WL.Client.invokeProcedure(invocationData, options); 
}

在适配器代码中,您将拥有以下内容:

var selectStatement = WL.Server.createSQLStatement("SELECT * FROM USER_ACC_TABLE WHERE USER = ?");

function getUserData(data) {
    var USERNAME = data.username;
    return WL.Server.invokeSQLStatement({
      preparedStatement : selectStatement,
      parameters : [USERNAME]
});
}     

答案 1 :(得分:0)

如果我理解正确,您希望获取用户将在登录表单的文本字段中输入的值并在适配器请求中使用它们吗?

以下问题的答案可能有所帮助:Passing parameters through HTTP Adapter?
虽然它解释了HTTP适配器,但获取值的JavaScript部分应该是相同的。

基本上,您使用以下方法从输入字段中获取值。您也可以将其保存在变量中:

parameters : [$('#element-name').val()]

链接问题中提供了完整示例。

为了将值传递给SQL适配器中的SQL查询,jnortey的以下答案应该有所帮助:IBM Worklight - Error while using variable in a SQL Adapter query,这基本上是相同的。

就是这样。现在 '?'在SQL查询中应该获取参数的值。