0

我已经编写了 Json 存储,用于在数据库中添加替换删除值。我已经初始化了集合。像这样

function wlCommonInit(){
    var collections = {
       Users : {
           searchFields: { Username: 'integer', Password: 'string'}
       },
       adapter:{
           name:'SQL',
           add:'addSQL',
           remove:'deleteSQL',
           replace:'updateSQL',
           load:{
               procedure:'getSQLs',
               params:[],
           }
       }
   };
   WL.JSONStore.init(collections).then(function () {
      alert("Collection is declared");
   });}

   $("#get").bind("click",function(){
       WL.JSONStore.get("Users").load().then(function(res1){
           alert(JSON.stringify(res1));
       });
   });

适配器:

var selectStatement = WL.Server.createSQLStatement("select username, password from test");

函数 getSQLs() {

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

运行此即时消息时,出现如下错误:

[wl.jsonstore] {"src":"load","err":18,"msg":"FAILED_TO_LOAD_INITIAL_DATA_FROM_ADAPTER_INVALID_LOAD_OBJ","col":"Users","usr":"jsonstore","doc":{},"res":{}}

您能否让我知道如何从数据库返回值以及如何解决此错误。

问候,

谢赫穆罕默德沙姆努恩

4

1 回答 1

1

您缺少使加载对象无效的加载键,就像错误消息中所说的(FAILED_TO_LOAD_INITIAL_DATA_FROM_ADAPTER_INVALID_LOAD_OBJ

你有:

load:{ procedure:'getSQLs', params:[], }

你应该有:

load:{ procedure:'getSQLs', params:[], key: yourLoadKey }

这取决于您的 getSQLs 过程调用返回什么,这取决于密钥如何适合适配器响应:responseFromAdapter.invocationResult[key].

但是,由于您使用的是 v6.2,我建议您避免使用loadpushJSONStore API,并按照此处的文档处理外部数据。

基于以上文档链接的一些示例代码:

WL.JSONStore.init(collections)

.then(function () {

    alert('init done');

    return WL.Client.invokeProcedure({
      adapter : 'SQL',
      procedure : 'getSQLs',
      parameters : []
    });
})

.then(function (responseFromAdapter) {

    alert('responseFromAdapter:' + JSON.stringify(responseFromAdapter));

    //Look at the responseFromAdapter and call something like
    //WL.JSONStore.get('Users').add(...)
});
于 2014-09-09T14:31:37.247 回答