javascript - 类型错误 : Cannot read property 'name' of undefined mysql query

标签 javascript node.js express

大家。 我做了一个小网站用于学习。我遇到了一个问题。实际上,这看起来很简单的错误。但对我来说,这是一个巨大的错误。

在我的系统上 ubuntu、node.js 和 mysql。

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 products', function (error, results) {
       response.send(ejs.render(data, {
        data: results
      }));
    });
  });
});


app.get('/delete/:id', function(request, response) { 
  client.query('DELETE FROM products WHERE id=?', [request.param('id')], function() {
    response.redirect('/');
  });
});

app.get('/insert', function(request, response) { 
  fs.readFile('insert.html', 'utf8', function (error, data) {
  response.send(data);
  });
}); 

app.post('/insert', function(request, response) {
  var body = request.body;

  client.query('INSERT INTO products (name, modelnumber, series) VALUES (?, ?, ?)', [
       body.name, body.modelnumber, body.series 
  ],function() {
    response.redirect('/');
  });
});

我的错误消息类似于标题;TypeError: 无法读取未定义的属性“名称”。

我知道错误出在哪里了。 app.post -> body.name、body.modelnumber、body.series.. 我边看书边输入代码... 我找不到为什么会出现错误..

最佳答案

来自express documentation :

req.body

Contains key-value pairs of data submitted in the request body. By default, it is undefined, and is populated when you use body-parsing middleware such as body-parser and multer.

This example shows how to use body-parsing middleware to populate req.body.

var app = require('express')();
var bodyParser = require('body-parser');
var multer = require('multer'); 

app.use(bodyParser.json()); // for parsing application/json
app.use(bodyParser.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded
app.use(multer()); // for parsing multipart/form-data

app.post('/', function (req, res) {
  console.log(req.body);
  res.json(req.body);
})

从书中学习通常是不够的,您还应该阅读您正在使用的库/模块的文档。

关于javascript - 类型错误 : Cannot read property 'name' of undefined mysql query,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28314936/

相关文章:

javascript - 如何根据我从ajax获得的json在select上添加禁用的select属性

javascript - 使用 Typescript 执行 API

javascript - 任何简单的方法来计算 Mongoose ?

node.js - 如何访问单独文件中的命令选项?

javascript - require 在 node.js 中的行为

javascript - 如何阻止 Express 解析 Angular 模板?

javascript - 我可以使用一些脚本来使我的 mongoose 数据库部署更加简化吗?

javascript - 在 AJAX 加载图标下方添加文本

javascript - AngularJS 组件 - 函数绑定(bind)

javascript - CanJS 对象列表自动子类化和重分类