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

Ibm mobilefirst 如何在Worklight 6.1中正确初始化JSON存储,ibm-mobilefirst,jsonstore,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

我正在尝试初始化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":{}}
这个实现似乎与文档中概述的非常相似,但是我无法对其进行初始化


有人能告诉我我做错了什么吗?

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

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


自从发现这一点后,我在Worklight应用程序中更改JSON存储的配置时,又多次看到了这个问题。

包含错误代码的文档如下所示

-2规定\u表\u搜索\u字段\u不匹配

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

无需卸载应用程序,只需按照文档操作,通过调用
removeCollection
destroy
来处理该错误。例如:

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

您可以随时让这变得更容易。

您是否尝试过按原样运行JSONStore示例?是的,我还阅读了示例页面中的两个PDF文档。您可能会看到这个代码片段与示例中的非常相似。我发现了我的问题。我以前在同一个Android仿真器上创建了一个同名但具有不同初始化变量的JSON存储。卸载Worklight应用程序后,JSON存储初始化正常。所以,如果有人遇到类似的问题时,代码似乎没有问题。。尝试卸载。您可能应该将其作为回答而不是评论。谢谢你不用卸载它。在您的情况下,您尝试使用不同的搜索字段对其进行初始化,初始化后无法更改这些字段。但是,如果要更改它们,必须首先从存储()中删除集合,然后再次初始化它。这里解释了错误:@Daniel Gonzalez,您必须卸载它(或删除用户数据)。我只是尝试将我的apk重新部署到设备上,这对于本机应用程序来说不是问题。通过常规android部署,您可以在代码中更改与存储选项相关的内容,并重新部署到设备上,就像magic一样,存储会按照您的预期进行更新。使用worklight时,以前的部署会持续并出现问题。我不会尝试使用同一部署中的两次初始化json存储。谢谢cnandreu。这是一个信息丰富且有用的答案。我认为我们不调用init就无法删除Collection?@SachinThapa是正确的:removeCollection只在一个集合句柄上工作,而由于init不工作,我们无法获得该句柄。我能想到的唯一解决办法是使用旧的搜索字段集初始化,然后删除集合并使用新的搜索字段初始化它。