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

Posted

技术标签:

【中文标题】如何以编程方式为工作灯适配器中的查询传递参数?【英文标题】:How do I programmatically pass parameters for a query in worklight adapters? 【发布时间】:2014-07-29 16:54:07 【问题描述】:

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

如何以编程方式在工作灯适配器中传递查询参数?

【问题讨论】:

【参考方案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]
);
     

【讨论】:

【参考方案2】:

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

也许以下问题的答案会有所帮助: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 查询中应该获取参数的值。

【讨论】:

以上是关于如何以编程方式为工作灯适配器中的查询传递参数?的主要内容,如果未能解决你的问题,请参考以下文章

R语言编程时如何传递文件名参数

如何在ViewPager中的各个Fragment间传递数据并刷新Fragment界面

如何以编程方式调用命令传递给它一个参数?

SharePoint 2010/Silverlight:以编程方式传递自定义参数

访问:从表单传递参数到查询

xcode/ios:以编程方式启动模态视图控制器时如何传递数据