2017-03-24 4 views
0

Ich habe einige Probleme mit JSONStore auf Android. Es funktioniert gut mit mfpdev App Vorschau.MobileFirst Platform 8 Cordova: JSONStore Probleme auf Android

intialization Code (erfolgreich ausgeführt wird):

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-Code (doesn‘Arbeit, Fehlerprotokolle siehe unten):

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);  
});  

}

Fehler von android logcat:

03-24 15: 29: 36.656 8362 8362 I ch romium: [INFO: CONSOLE (40796)] "JSONStore Put-Funktion namens: {" enddate ":" 2017-03-03 "," description ":" Test Arbeitsauftrag 0 "," id ": 1," ts ": "Verbot", "Status": "In Bearbeitung"}“, Quelle: 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: Zeile 40798: Daten sind kein Array 03-24 15: 29: 36.656 8362 8362 I Chrom: [INFO: CONSOLE (40798)] "Daten sind kein Array", Quelle : 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: Zeile 40802: Daten sind Array 03-24 15: 29: 36,657 8362 8362 I Chrom: [INFO: CONSOLE (40802)] "Daten ist Array", source: 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: L ine 40813: JSONstore put fehlgeschlagen: { "src": "Laden", "err": 10, "msg": "BAD_PARAMETER_EXPECTED_DOCUMENT_OR_ARRAY_OF_DOCUMENTS", "col": "Arbeitsaufträgen", "usr": "jsonstore", "doc": {}, "res": {}} 03-24 15: 29: 36,662 8362 8362 I Chrom: [INFO: CONSOLE (40813)] "JSONstore put fehlgeschlagen: {" src ":" store "," err ": 10, "msg": "BAD_PARAMETER_EXPECTED_DOCUMENT_OR_ARRAY_OF_DOCUMENTS", "col": "Arbeitsaufträgen", "usr": "jsonstore", "doc": {} "res": {}}“, Quelle: file: /// android_asset /www/build/main.js (40813)

Der Fehler ist BAD_PARAMETER_EXPECTED_DOCUMENT_OR_ARRAY_OF_DOCUMENTS, jedoch habe ich in meinem Code es ein Array, wenn es nicht bereits eine Reihe zu machen.

Außerdem kann ich keine Unterlagen über die Änderung() -Methode auf einer JSONStore Sammlung finden, aber ich fand es in diesem Beispiel verwendet wird: https://mobilefirstplatform.ibmcloud.com/labs/developers/8.0/advancedmessenger/

Kann jemand vor Ort, was das Problem sein könnte?

Antwort

0

Ich endlich herausgefunden, was das Problem war.

Der Fehler BAD_PARAMETER_EXPECTED_DOCUMENT_OR_ARRAY_OF_DOCUMENTS scheint etwas irreführend zu sein. Es ist immer fehlgeschlagen, wenn ich ein einzelnes JSONObject gesendet habe. Nachdem ich es unter Verwendung des folgenden Codes in ein JSONArray umgewandelt hatte, funktionierte es:

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)); 
} 
Verwandte Themen