我试图将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启动失败"消息。以及以下错误:
[wl.jsonstore {"src":"initCollection", "err":-2,"msg":"PROVISION_TABLE_SEARCH_FIELDS_MISMATCH","col":"token","usr":"jsonstore","doc":{},"res":{}}
此实现似乎是文档中概述的内容,但是我无法初始化。
谁能告诉我我在这里做错了什么?
带有错误代码的文档在这里。
-2 provision_table_search_fields_mismatch
搜索字段不是动态的。不可能在不打电话的情况下更改搜索字段WL.JSONSTORE中的销毁方法或删除方法在使用新搜索字段调用初始化方法之前的类。这如果更改搜索字段的名称或类型,可能会发生错误。例如:{key:'string'} to {key:'number'}或{mykey:'string'}to {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
});
您始终可以提交功能请求,以使其更容易。
如果您以前创建了一个具有相同名称但具有不同初始化变量的JSON商店。您必须卸载该应用程序。
卸载后,您可以将应用程序重新删除到设备上,JSON商店将按预期进行初始化。
自从发现这一点以来,我在更改Worklight应用程序中的JSON商店的配置时又一次看到了这个问题。