Cannot read length 属性 错误 in jsonstore in Mobilefirst platform

Cannot read length property error in jsonstore in Mobilefirst platform

我是 javascript 和 MobileFirst 的新手。我试图读取 json 个值的列表:

[{"_id":1,"json":{"age":10,"name":"carlos"}},{"_id":2,"json":{"age":10,"name":"carlos"}}]

并输出DOM中的值。它失败并输出此错误:

03-27 04:29:19.035: E/NONE(3093): Uncaught Exception: Uncaught SyntaxError: Unexpected token o at (compiled_code):311

函数如下:

main.js:

 function add(){
    var collectionName = 'people';

    // Object that defines all the collections.
    var collections = {

      // Object that defines the 'people' collection.
      people : {

        // Object that defines the Search Fields for the 'people' collection.
        searchFields : {name: 'string', age: 'integer'}
      }
    };

    // Optional options object.
    var options = {


    };

    WL.JSONStore.init(collections, options)

    .then(function () {

      // Data to add, you probably want to get
      // this data from a network call (e.g. Worklight Adapter).
      var data = [{name: 'carlos', age: 10}];

      // Optional options for add.
      var addOptions = {

        // Mark data as dirty (true = yes, false = no), default true.
        markDirty: true
      };

      // Get an accessor to the people collection and add data.
      return WL.JSONStore.get(collectionName).add(data, addOptions);
    })

    .then(function (numberOfDocumentsAdded) {
      // Add was successful.
        alert("Data successfully added.");
    })

    .fail(function (errorObject) {
        alert("Data failed to be added.");

    });

}
function display(){
var collectionName = 'people';



var options = {
 };

WL.JSONStore.get(collectionName)

.findAll()

.then(function (arrayResults) {
  // arrayResults = [{_id: 1, json: {name: 'carlos', age: 99}}]

    var arrayResult = '{"files":' + arrayResults + '}';
    alert(arrayResults.length);
    var jsonData = JSON.parse(arrayResult);
    alert (jsonData.files.length);
    alert(jsonData);



     var full_list = "";
    for (var i = 0; i < jsonData.files.length; i++) {
        var file = jsonData.files[i];
        full_list =  full_list + file.json.name + " " + file._id + " is " + file.json.age + '<br />';
        $("#demo").append(full_list); 


    }



})
.fail(function (errorObject) {
  // Handle failure.
});


 }

index.html

<a href="#" onclick="display();" >click here to display the data</a>
        <br /> 
        <a href="#" onclick="deldocument();" >click here to delete the data</a>
        <p id="demo"></p> <br /> 
        <a href="#" onclick="destroy();" >click here to destroy the data</a>
        <p id="demo"></p> <br />

如果能得到一些帮助,我将不胜感激。谢谢大家。

如果你 JSON.parse 一个对象 "Unexpected token o" 被抛出只是因为它试图解析 obj_to_parse.toString() ,即[object Object]。尝试 JSON.parse('[object Object]').

这是你的结果:

//arrayResults = [{_id: 1, json: {name: 'carlos', age: 99}}]

尝试这样阅读:

       var full_list="";
        for(var i=0;i<arrayResults.length;i++){ 
            // alert(arrayResults[i]._id);
            // alert(arrayResults[i].json.name); 
            // alert(arrayResults[i].json.age);
           full_list =  full_list + arrayResults[i].json.name + " " + arrayResults[i]._id + " is " + arrayResults[i].json.age + '<br />';
        $("#demo").append(full_list);  

         }