【问题标题】:cannot call method 'forEach' of undefined node.js无法调用未定义 node.js 的方法“forEach”
【发布时间】:2015-04-03 03:15:49
【问题描述】:

我一直在做一个学习的小网站。但我遇到了标题之类的错误。为了答案,我在互联网上到处搜索..我找不到答案。

我的系统是 Ubuntu、node.js、express 和 mysql。

app.js

var fs = require('fs');
var ejs = require('ejs');
var http = require('http');
var mysql = require('mysql');
var express = require('express');

var client = mysql.createConnection({
  user: 'root',
  password: 'password',
  database: 'Company'
});

var app = express();

http.createServer(app).listen(8080, function(){
  console.log('Server running at http://127.0.0.1:8080');
});

app.get('/', function(request, response) {
  fs.readFile('list.html', 'utf8', function(error, data) {
    client.query('SELECT * FROM prodects', function (error, results) {
       response.send(ejs.render(data, {
        data: results
      }));
    });
  });
});

list.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>List Page</title>
</head>
<body>
  <h1>List Page</h1>
  <a href="/insert">INSERT DATA</a>
  <hr />
  <table width="100%" border="1">
    <tr>
      <th>DELETE</th>
      <th>EDIT</th>
      <th>ID</th>
      <th>NAME</th>
      <th>Model Number</th>
      <th>Series</th>
    </tr>
    <% data.forEach(function(item, index) { %>
    <tr>
      <td><a href="/delete/<%= item.id %>">Delete</a></td>

    </tr>
    <% }); %>
  </table>
</body>
</html>

20 行有错误; 在我的屏幕上,它显示“无法调用未定义的方法'forEach'”。

【问题讨论】:

  • 嗯....您不需要使用fs 读取list.html 文件。你应该这样做...ejs.render( 'list.html', { data: results } )
  • Also... data 可能是 null... 因为我认为您在查询中想要 products 而不是 prodects... 因此执行时出错查询结果为null

标签: javascript mysql html node.js express


【解决方案1】:

我最好的猜测是,您在对client.query 的回调中收到错误,因此results 为空。

也许错误是拼写错误的表名?产品 -> 产品?

【讨论】:

  • 酷 :) 顺便说一句,当有人在 Stack Overflow 上回答问题时,最好将该答案标记为已接受,这样问题就不会因为“未回答”而挥之不去
猜你喜欢
  • 1970-01-01
  • 2015-01-21
  • 2016-03-22
  • 1970-01-01
  • 2013-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多