如何在Worklight 6.1中正确初始化JSON存储

时间:2014-02-06 06:46:19

标签: ibm-mobilefirst jsonstore

我正在尝试将IBM Worklight JSON存储初始化,如下所示:

//JSONStore jsonStoreCollection metadata
var jsonStoreCollection = {};

//JSONStore jsonStoreCollection metadata
var COLLECTION_NAME = 'people';

function wlCommonInit(){


    // Create empty options to pass to
    // the WL.JSONStore.init function
    var options = {};

    //Define the collection and list the search fields
    jsonStoreCollection[COLLECTION_NAME] = {
        searchFields : {name: 'string'},
    };


    //Initialize the JSON store collection
    WL.JSONStore.init(jsonStoreCollection, options)
    .then(function () {
        console.log("Successfully Initialized the JSON store");
    })
    .fail(function (errorObject) {
        console.log("JSON store init failed :( ");
    });

}

但是当我在我的android模拟器中运行它时,logcat给了我“JSON store init failed”消息。并出现以下错误:

[wl.jsonstore {"src":"initCollection", "err":-2,"msg":"PROVISION_TABLE_SEARCH_FIELDS_MISMATCH","col":"token","usr":"jsonstore","doc":{},"res":{}}

这个实现似乎非常符合文档中概述的内容,但是我无法初始化它。

有谁能告诉我这里我做错了什么?

2 个答案:

答案 0 :(得分:2)

包含错误代码的文档为here

  

-2 PROVISION_TABLE_SEARCH_FIELDS_MISMATCH

     

搜索字段不是动态的。没有调用就无法更改搜索字段   WL.JSONStore中的destroy方法或removeCollection方法   在使用新搜索字段调用init方法之前的类。这个   如果更改搜索字段的名称或类型,则可能会发生错误。   例如:{key:'string'}到{key:'number'}或{myKey:'string'}   到{theKey:'string'}。

无需卸载应用程序,只需按照文档处理并通过调用removeCollectiondestroy来处理错误情况。例如:

WL.JSONStore.init(...)
.then(function () {
  //init was successful
})
.fail(function (error) {
  //check for -2
  //call removeCollection or destroy
  //re-init with new search fields
});

您可以随时submit a feature request使这更容易。

答案 1 :(得分:0)

如果您之前已创建了具有相同名称但具有不同初始化变量的JSON存储。您必须卸载该应用程序。

卸载后,您可以将应用程序重新部署到设备,JSON存储将按预期初始化。

自从发现这一点以来,我在Worklight应用程序中对JSON存储的配置进行了更改后,我再次看到了这个问题。