TypeError:无法读取未定义的属性“长度”?

我得到“TypeError:无法读取属性的'长度'未定义? 错误,当我尝试从保存在文件中的联系人中提取特定的联系人(提供电话号码)时。

exports.query = function(number) { var json_result = JSON.parse(read_json_file()); console.log(json_result); var result = json_result.result; for (var i = 0; i < result.length; i++) { var contact = result[i]; if (contact.primarycontactnumber === number) { return contact; } } return null; }; 

我打电话给上面的代码:

  app.get('/contacts/:number', function(request, response) { response.setHeader('content-type', 'application/json'); response.end(JSON.stringify(contacts.query(request.params.number))); }); 

我的read_json_file方法的代码是:

 function read_json_file() { var file = './data/contacts.json'; return fs.readFileSync(file); } 

我想, json_result没有属性result 。 如果它适合你的function逻辑,你可以防守地设置resultvariables像这样:

 var result = json_result.result || []; 

如果json_result.result未定义(或计算为false),那么会将空数组赋给resultvariables。