我正在尝试将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":{}}
这个实现似乎非常符合文档中概述的内容,但是我无法初始化它。
有谁能告诉我这里我做错了什么?
答案 0 :(得分:2)
包含错误代码的文档为here。
-2 PROVISION_TABLE_SEARCH_FIELDS_MISMATCH
搜索字段不是动态的。没有调用就无法更改搜索字段 WL.JSONStore中的destroy方法或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
});
您可以随时submit a feature request使这更容易。
答案 1 :(得分:0)
如果您之前已创建了具有相同名称但具有不同初始化变量的JSON存储。您必须卸载该应用程序。
卸载后,您可以将应用程序重新部署到设备,JSON存储将按预期初始化。
自从发现这一点以来,我在Worklight应用程序中对JSON存储的配置进行了更改后,我再次看到了这个问题。