【问题标题】:MobileFirst Platform 8 Cordova: JSONStore issues on AndroidMobileFirst Platform 8 Cordova:Android 上的 JSONStore 问题
【发布时间】:2017-08-17 13:29:01
【问题描述】:

我在使用 Android 上的 JSONStore 时遇到了一些问题。使用 mfpdev app preview 可以正常工作。

初始化代码(运行成功):

let collections = {
  workorders: {
    searchFields: {id: 'integer'}
  }
}

WL.JSONStore.init(collections).then((success) => {
  console.log("Jsonstore init success");
},
(failure) => {
  console.log("Jsonstore init failed", failure);      
});

放置代码(不起作用,请参阅下面的错误日志):

 put(data) : void {
console.log("JSONStore put function called: " + JSON.stringify(data));

if (!Array.isArray(data))
{
  console.log("data is not array");
  data = this.json2array(data);
}

if (Array.isArray(data)){
  console.log("data is array");
}

let collectionName = "workorders";
let options = {
  replaceCriteria: ['id'],
  addNew: true,
  markDirty: false
};

WL.JSONStore.get(collectionName).change(data, options).then((success)=> {
  console.log("JSONStore put success");
}, 
(failure) => {
  console.log("JSONstore put failed: " + JSON.stringify(failure), failure);      
});      

}

来自 android logcat 的错误:

03-24 15:29:36.656 8362 8362 I chromium: [INFO:CONSOLE(40796)] "JSONStore put function called: {"enddate":"2017-03-03","description":"测试工作订单 0","id":1,"ts":"Ban","status":"进行中"}",来源:file:///android_asset/www/build/main.js (40796) 03-24 15:29:36.656 8362 8362 D SystemWebChromeClient: file:///android_asset/www/build/main.js: 第 40798 行:数据不是数组 03-24 15:29:36.656 8362 8362 I chromium: [INFO:CONSOLE(40798)] “数据不是数组”,来源:file:///android_asset/www/build/main.js (40798) 03-24 15:29:36.657 8362 8362 D SystemWebChromeClient: file:///android_asset/www/build/main.js: 第 40802 行:数据是数组 03-24 15:29:36.657 8362 8362 I chromium: [INFO:CONSOLE(40802)] “数据是数组”,来源:file:///android_asset/www/build/main.js (40802) 03-24 15:29:36.662 8362 8362 D SystemWebChromeClient:file:///android_asset/www/build/main.js:第 40813 行:JSONstore 放置失败:{"src":"store","err":10, "msg":"BAD_PARAMETER_EXPECTED_DOCUMENT_OR_ARRAY_OF_DOCUMENTS","col":"workorders","usr":"jsonstore","doc":{},"res":{}} 03-24 15:29:36.662 8362 8362 I chromium: [INFO:CONSOLE(40813)] "JSONstore put failed: {"src":"store","err":10,"msg":"BAD_PARAMETER_EXPECTED_DOCUMENT_OR_ARRAY_OF_DOCUMENTS"," col":"workorders","usr":"jsonstore","doc":{},"res":{}}",来源:file:///android_asset/www/build/main.js (40813)

错误是BAD_PARAMETER_EXPECTED_DOCUMENT_OR_ARRAY_OF_DOCUMENTS,但是如果它还不是数组,我在我的代码中将其设为数组。

此外,我在 JSONStore 集合上找不到有关 change() 方法的任何文档,但我发现它用于此示例:https://mobilefirstplatform.ibmcloud.com/labs/developers/8.0/advancedmessenger/

谁能发现问题所在?

【问题讨论】:

    标签: ibm-mobilefirst jsonstore


    【解决方案1】:

    我终于找到了问题所在。

    错误 BAD_PARAMETER_EXPECTED_DOCUMENT_OR_ARRAY_OF_DOCUMENTS 似乎有些误导。如果我发送一个 JSONObject,它总是失败。在我使用下面的代码将它转换为 JSONArray 之后,它起作用了:

    if (!Array.isArray(data))
    {
      console.log("data is not array");
      data = JSON.parse('[' + JSON.stringify(data) + ']');
      console.log("data is now an array: " + JSON.stringify(data));
    }
    

    【讨论】:

      猜你喜欢
      • 2020-01-25
      • 1970-01-01
      • 2023-03-05
      • 2015-06-04
      • 2016-04-27
      • 1970-01-01
      • 2016-05-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多