2016-01-10 5 views
1

Я получаю «TypeError: Can not read property« length »undefined?» ошибка, когда я пытаюсь получить конкретный контакт (с указанием номера телефона) из моих контактов, сохраненных в файле.TypeError: Невозможно прочитать свойство 'length' undefined?

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

Что такое содержимое 'json_result', когда вы отправляете его на консоль? – TZHX

ответ

2

Я полагаю, что json_result не обладает свойством result. Если это вписывается в логику функции, вы можете установить защитно result переменные так:

var result = json_result.result || []; 

что будет назначать пустой массив result переменные, если json_result.result не определено (или оценивается ложь).

Смежные вопросы