асинхронный обратный вызов не может получить внешние параметры - PullRequest

Ответы [ 2 ]

2 голосов
/ 28 марта 2019

Есть 2 вещи, которые идут не так в вашем коде

  1. fs.readFile возвращает содержимое файла как string, поэтому вам необходимо сначала проанализировать содержимое, если содержимое JSON, а затем вы можете получить доступ к ключам и значениям в нем

  2. Вы получаете доступ к name в data, который недоступен в объекте JSON. Вы должны указать имя ключа, хранящееся в переменной, передав его в квадратных скобках, а не dot(.), например data[name]

Прикрепленный код для справки:

var fs = require('fs');

function find(name,  cb){
        fs.readFile('./db.json', 'utf8', function(err, data){
                if(err) return cb(err)
                data =  JSON.parse(data);
                cb(null, data[name]);
        });
}

find('student', function(err, data){
        console.log(data);
})

0 голосов
/ 28 марта 2019

Если посмотреть на структуру вашего объекта, data - это массив объектов, поэтому вам нужно получить доступ как data.student[i].name;здесь i - некоторый индекс

data.student[0].name // prints 'tom'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...