Node.js 异步回调可以';无法获取外部参数

Node.js 异步回调可以';无法获取外部参数,node.js,express,Node.js,Express,查看您的对象结构,数据是一个对象数组,因此您必须像数据那样访问。student[i]。name;这里i是一些索引 data.student[0].name//打印'tom'查看对象结构,data是一个对象数组,因此您必须像data.student[i].name一样访问;这里i是一些索引 data.student[0].name//prints'tom'您的代码中有两个地方出错 fs.readFile以string的形式返回文件内容,因此如果内容是JSON,则需要首先解析内容,然后才能访问其中的

查看您的对象结构,
数据是一个对象数组,因此您必须像
数据那样访问。student[i]。name
;这里
i
是一些索引


data.student[0].name//打印'tom'

查看对象结构,
data
是一个对象数组,因此您必须像
data.student[i].name一样访问;这里
i
是一些索引


data.student[0].name//prints'tom'
您的代码中有两个地方出错

  • fs.readFile
    string
    的形式返回文件内容,因此如果内容是
    JSON
    ,则需要首先解析内容,然后才能访问其中的键和值

  • 您正在访问JSON对象中不可用的
    data
    中的
    name
    。您必须提及存储在变量中的键名,方法是将其传递到方括号中,而不是像
    data[name]这样的
    dot(.)
    运算符

  • 附上参考代码:

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

    代码中有两个地方出错

  • fs.readFile
    string
    的形式返回文件内容,因此如果内容是
    JSON
    ,则需要首先解析内容,然后才能访问其中的键和值

  • 您正在访问JSON对象中不可用的
    data
    中的
    name
    。您必须提及存储在变量中的键名,方法是将其传递到方括号中,而不是像
    data[name]这样的
    dot(.)
    运算符

  • 附上参考代码:

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

    如果您可以将代码粘贴为代码块会更好如果您可以将代码粘贴为代码块会更好不应该是
    data.student[0]。name
    ?不应该是
    data.student[0]。name
    ?您正试图在as数据包含student数组对象的位置直接访问数据[name]。您正在尝试访问数据[name]直接作为数据包含学生数组对象的位置。