当前位置: 首页 > 知识库问答 >
问题:

如何将令牌(post)Mysql与节点一起使用。js?

闻人飞白
2023-03-14

我是一个新手程序员。我一直在制作一个非常小的网站。我没有遇到什么错误。我找到了一些解决办法。但我还没有得到答案。

如果你不介意,请给我你的触摸。T^T

我连接了节点。js with Mysql'GET正在运行,没有任何问题。但是“POST”部分无法获取我在网页上键入的一些数据。

我想知道的是,为什么“POST”无法获取数据。

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('/');
  });
});

app.get('/edit/:id', function(request, response) { 
  fs.readFile('edit.html', 'utf8', function(error, data) {
    client.query('SELECT * FROM products WHERE id = ?', [
      request.param('id')
    ], function(error, result) {
      response.send(ejs.render(data, {
        data: result[0]
      }));
    });
  });
});

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

  client.query('UPDATE products SET name=?, modelnumber=?, series=? WHERE id=?', [
    body.name, body.modelnumber, body.series, request.param('id')
    ], function() {
      response.redirect('/');
    });
});

错误消息

TypeError:无法读取应用程序中未定义的属性“name”。收到fs。readFile。客户查询回答邮寄ejs。提供数据(/home/han/app.js:46:9)位于路由器的pass(/home/han/node\u modules/express/lib/router/index.js:145:5)处的param(/home/han/node\u modules/express/lib/router/index.js:164:37)处的回调(/home/han/node\u modules/express/lib/router/index.js:138:11)_在对象上调度(/home/han/node\u modules/express/lib/router/index.js:173:5)。路由器(/home/han/node\u modules/express/lib/router/index.js:33:10)位于对象的下一个(/home/han/node\u modules/express/node\u modules/connect/lib/proto.js:193:15)。expressInit[作为句柄](/home/han/node\u modules/express/lib/middleware.js:30:5)位于下一个对象(/home/han/node\u modules/express/node\u modules/connect/lib/proto.js:193:15)。查询[作为句柄](/home/han/node\u modules/express/node\u modules/connect/lib/middleware/query.js:45:5)

当我尝试将数组值更改为“value”应用程序时。发布(“/插入”)部分,网页显示“值”。

共有2个答案

席俊达
2023-03-14

在本节中:

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('/');
  });
});

尝试替换请求的用法。车身带有请求。参数。使用forms post时,节点将字段解释为请求对象上的参数。

阎德业
2023-03-14

错误是该请求。主体未定义。它未定义,因为您尚未配置Express来解析正文。为此,需要安装模块体解析器

npm install body-parser

接下来,要求在代码中进行身体解析

var bodyParser = require('body-parser')

并在初始化Express后将其设置为中间件。

var app = express();
app.use(bodyParser.urlencoded({ extended: false }));

您的request.body现在应该等于形式。

编辑1:

为您的插入查询尝试此操作

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

  var product = {
    name: body.name,
    modelnumber: body.modelnumber,
    series: body.series
  }
  client.query('INSERT INTO products SET ?', product, function() {
      response.redirect('/');
  });
});
 类似资料:
  • 我正在使用curl来测试我的Django表单之一。我尝试过的调用(每个都有错误,为了可读性,多行调用): (1): (在cookie中使用http头和)会导致400错误,并且不会返回任何数据。 (2): (如(1)中所示,但标头属性声明中没有空格,cookie中也有)会导致相同的400错误,并且没有返回任何数据。 (3): (只有带有,没有cookie的http头)导致错误代码403,消息为:未设

  • 这似乎是一个基本问题,但我无法在其他地方找到答案。如果这是一个重复的帖子,请原谅。 是否可以对标记为@XmlAccessorType(XmlAccessType. FIELD)的类进行@XmlValue注释? 我正在尝试使用JAXB解析XML文件,虽然XML本身很大并且有其他字段,但问题特定于此字段: 映射为: 该字段在XML中声明为令牌类型。 @XmlValue注释给我一个IllegalAnno

  • 我正在使用AWS dynamodb中的api“updateItem”来更新项目。主要功能是添加新项目或删除一个现有项目。但是,它们都不适用于以下代码,ADD的错误消息为“”ValidationException:无效的UpdateExpression:运算符或函数的操作数类型不正确;运算符或函数:list_append,操作数类型:S。以下是我的代码: 旧的_lists _DB的模式非常简单,只有

  • 在控制台中,当运行时,命令现在被本机启用(node版本 但是,当我添加打字稿层时,我总是得到。 我如何解决这个问题? 背景思想:本机使用获取并摆脱和依赖项 < code>tsconfig.json和一般设置:https://github . com/NEX ys-system/server-boilerplate/blob/master/ts config . JSON 另见: Fetch API

  • 问题内容: 有人在Grunt上使用了节点检查器进行应用程序调试吗?如果不是,您能推荐基于Grunt的应用程序的调试工具吗? 我正在为服务器端应用程序使用nodejs,并且我有Grunt来使用分离的任务(这是因为用户可以单独执行任务)。 问题答案: 要在调试中运行grunt,您需要将grunt脚本显式传递给节点: 并在任务中添加一行。然后将使用调试工具打开浏览器。 编辑2014年2月28日 添加了命

  • 我在Ubuntu 14.04中安装了phpbrew以使用PHP5.4。它工作得很好,但当我尝试使用composer时除外,composer会忽略phpbrew并安装与PHP5.5相关的依赖项。 有没有办法强制composer与phpbrew config兼容?我试图在我的作曲家中添加:php:“5.4”。json,但是它说这个要求在我的php版本中是不可能的。