【问题标题】:Accessing json document keys in adapter procedure (IBM worklight)在适配器过程中访问 json 文档键(IBM worklight)
【发布时间】:2014-07-31 01:49:55
【问题描述】:

我有一个本地 jsonstore 通过适配器链接到远程 sql 数据库。我正在尝试像这样将本地数据推送到远程数据库:

submit_data = function () {

    accessor.getPushRequired().then(function (result) { alert(result.length);

        accessor.push();

    });

假设我只添加了文档(没有替换/删除)。 我希望我的添加过程如下所示:

function addGegegr(document) {

    //WL.Logger.warn(document[56]);
    return WL.Server.invokeSQLStoredProcedure({
        procedure : "DBO.USP_TIM_add_sp",
            parameters : [document.key1,document.key2,document.key3,...]
    });
}

对于替换/删除过程也是如此,它们应该调用具有相同参数的其他存储过程。

但是,我收到错误,因为在调用 push 后传递给 add 函数的变量“document”worklight 似乎只是一个字符串而不是 json 对象。

所以我的问题是:如何从适配器过程访问 json 属性?如果不可能,我可以将这些属性传递给推送函数吗?

P.S.:将 n 个文档中的每一个作为 push() 的参数传递给 add 不起作用,并导致 add 被调用 n*n 次而不是 n...

【问题讨论】:

    标签: ibm-mobilefirst worklight-adapters jsonstore


    【解决方案1】:

    尝试使用JSON.parse 将字符串转换为 JavaScript 对象。

    function addGegegr(document) {
      var doc = JSON.parse(document);
      //... use doc as a regular JavaScript object
    }
    

    如果JSON.parse 在那里不可用,您可以通过在适配器实现文件中包含this code 来添加它。

    【讨论】:

    • 工作,谢谢。与在服务器上添加java代码解析json相比,这样做有什么优势?
    • 需要维护的代码更少,JSON.parse 应该是开箱即用的。
    猜你喜欢
    • 2016-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-31
    • 2013-05-23
    • 1970-01-01
    相关资源
    最近更新 更多