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

Node.js无法读取属性

马野
2023-03-14

我是新来的node.js.我正在尝试创建一个注册页面,并使用mysql将输入的值保存在数据库中。

我可以通过在请求头上传递参数来实现这一点。但是,在请求头中传递参数始终不是一个好主意。所以尝试在请求体上传递参数。

我使用邮差测试我的node.js服务。

下面是我的演示应用程序的github链接

https://github.com/debasish283/node_gulp

我还需要做什么来传递请求体中的参数?

当传递参数在请求体我得到下面提到的错误。

TypeError:无法读取未定义的属性“firstname”

代码:服务器-

var express = require('express');
var db = require('./db.js');
var config = require('config');

var wrapper = {
register: function(req, res) {
console.log('inside wrapper');
db.register(req.body);
}
};
module.exports = wrapper;

路线-

var router = require('express').Router();
var wrapper = require('../server/wrapper');

router.post('/register', wrapper.register);

module.exports = router;

app.js

var express = require('express');
var app = express();
var port = process.env.PORT || 3000;
var router = require('./routes');
var bodyParser = require('body-parser');

app.use('/', router);

app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());

app.listen(port, function() {
console.log('Server started at ' + port);
});

服务器-

var mysql = require('mysql');
var config = require('config');

var connection = mysql.createConnection({
host: config.get('database.host'),
user: config.get('database.user'),
password: config.get('database.password'),
database: config.get('database.database')
});
var db = {
register: function(parameter) {
var qry = 'insert into users values (' + "'" + parameter.firstname + "'" + ',' + "'" + parameter.lastname + "'" + ',' + "'" + parameter.username + "'" + ',' + "'" + parameter.bday + "'" + ',' + "'" + parameter.gender + "'" + ',' + "'" + parameter.password + "'" + ')';
console.log(qry);
connection.connect();
connection.query(qry, function(err, rows, fields) {
if (!err) {
        console.log('The solution is: ', rows);
        } else
            console.log('Error while performing Query.' + err);
    });

    connection.end();
}
};
module.exports = db;

共有2个答案

卫泉
2023-03-14

正文解析器的正确顺序应该如下。

app.use(bodyParser.json()); // support json encoded bodies
app.use(bodyParser.urlencoded({ extended: true }));
app.use('/', router);

检查以下链接以获取示例
https://scotch.io/tutorials/use-expressjs-to-get-url-and-post-parameters

柳胜
2023-03-14

您需要在路由之前移动正文解析中间件,以便在执行路由处理程序之前首先解析请求正文:

// app.js

// ...

app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());

app.use('/', router);

// ...
 类似资料:
  • 问题内容: 我正在尝试从无头CMS(Sanity.io)返回一些数据,但是我的React一直遇到错误。我已遵循此示例,但是现在出现错误 我的密码 关于我在做什么错的任何想法吗? 问题答案: 渲染组件时,可以将country定义为未定义或为null。确保它在初始渲染时是数组: 或者, 您可以将地图用于这样的国家/地区: 这样可以确保仅在有国家/地区时才运行地图。

  • 问题内容: 我是ReactJS的新手,遇到一些问题。 我还了解了语法,它说以下代码具有相同的含义。 1。 2。 但是,第一种方法引发此错误 问题答案: YTSearch({key: API_KEY, term: ‘nba’}, function(videos) { this.setState({ videos }); }); 引发错误,因为在此回调内部并未引用函数本身的上下文,因此此处未定义。 在

  • 我试图在Springboot应用程序中使用logback-spring.xml创建日志记录功能,但是无法读取logback-spring.xml文件中的属性值(例如:log.dest.path)。 我通过@PropertySource基于概要文件动态加载不同环境(开发、阶段、生产)的属性文件(YAML)。概要分析工作正常,并且加载了正确的YAML文件(例如:- application.dev.ym

  • 我正在使用webpack,浏览器中出现以下错误: 编译时没有错误或警告。 validator.js的第15行如下所示:

  • 如果函数在组件中,那么一切都很好。如果我把它单独取出并导出到一个组件中,那么我会得到一个错误TypeError:不能读取未定义的属性(读取'reduce')

  • 我有两个文件,一个是'a.js'在压缩文件夹中,另一个是b.js在压缩文件夹中的一个文件夹b中,我正在使用Express的路由。我是一个初学者,不知道如何解决这个错误,它意味着什么。我想在a.js中使用b文件。A.JS 这是B.JS 这是错误 This.Stack.Push(层);^ TypeError:无法读取function.route(C:\users\palwasha\downloads\