节点JS:TypeError:无法读取未定义的属性“ forEach”

时间:2020-06-06 11:38:41

标签: javascript jquery node.js arrays json

我收到TypeError:无法读取未定义的属性'forEach'。我不知道以下代码有什么问题:

app.post("/entershop", (request, response)=> {         

let username = request.body.uname;
let psw = request.body.psw; 

let rawdata = fs.readFileSync('mapping.json');
let rootdata = JSON.parse(rawdata);
let isvalid = false;
let shops = rootdata["shops"];

shops.forEach(function(shop) {
var password = shop[username][0];
if(password === psw) 
    {
       console.log('successful login');

    }
else 
    {
       console.log('login unsuccessful');
    }
  });
 });

该错误在网页上显示如下:

TypeError: Cannot read property 'forEach' of undefined
at app.post (/home/ubuntu/TheRandomShops/index_test.js:33:15)
at Layer.handle [as handle_request] (/home/ubuntu/TheRandomShops/node_modules/express/lib/router/layer.js:95:5)
at next (/home/ubuntu/TheRandomShops/node_modules/express/lib/router/route.js:137:13)
at Route.dispatch (/home/ubuntu/TheRandomShops/node_modules/express/lib/router/route.js:112:3)
at Layer.handle [as handle_request] (/home/ubuntu/TheRandomShops/node_modules/express/lib/router/layer.js:95:5)
at /home/ubuntu/TheRandomShops/node_modules/express/lib/router/index.js:281:22
at Function.process_params (/home/ubuntu/TheRandomShops/node_modules/express/lib/router/index.js:335:12)
at next (/home/ubuntu/TheRandomShops/node_modules/express/lib/router/index.js:275:10)
at serveStatic (/home/ubuntu/TheRandomShops/node_modules/serve-static/index.js:75:16)
at Layer.handle [as handle_request] (/home/ubuntu/TheRandomShops/node_modules/express/lib/router/layer.js:95:5

mapping.json如下所示:

{
"owners":[
            {"name":"Bala", "id":"1", "psw":"bala"},
            {"name":"Rohit", "id":"2", "psw":"Rohit"}
           ],
"employees":[
            {"name":"Krithi", "owners":"Bala", "psw":"Krithi"},
            {"name":"Kumar", "owners":"Rohit", "psw":"Kumar"}
           ]
 }

我们将非常感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

希望这可以解决您的问题

app.post("/entershop", (request, response)=> {         

let username = request.body.uname;
let psw = request.body.psw; 

let rawdata = fs.readFileSync('mapping.json');
let rootdata = JSON.parse(rawdata);
let isvalid = false;
let shops = rootdata["shops"]||[];

shops.forEach(function(shop) {
var password = shop[username][0];
if(password === psw) 
    {
       console.log('successful login');

    }
else 
    {
       console.log('login unsuccessful');
    }
  });
 });

答案 1 :(得分:0)

rootdata为空,因为您的数据中没有所谓的shop