node.js - Express.js POST 请求未定义
问题描述
我需要向服务器发出 POST 请求,以通过 Express 和 Sequelize 将一些数据放入数据库
var express = require('express'),
http = require('http'),
path = require('path'),
Sequelize = require('sequelize'),
bodyParser = require('body-parser'),
_ = require('lodash');
sequelize = new Sequelize('sqlite://' + path.join(__dirname, 'invoices.sqlite'), {
dialect: 'sqlite',
storage: path.join(__dirname, 'invoices.sqlite')
});
Invoice = sequelize.define('invoices', {
id: {
type: Sequelize.INTEGER,
primaryKey: true,
autoIncrement: true
},
customer_id: {
type: Sequelize.INTEGER
},
discount: {
type: Sequelize.DECIMAL
},
total: {
type: Sequelize.DECIMAL
}
});
var app = module.exports = express();
app.set('port', process.env.PORT || 8000);
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(express.static(path.join(__dirname, 'public')));
app.route('/api/invoices')
.post(function(req, res) {
let invoice = Invoice.build(_.pick(req.body, ['customer_id', 'discount', 'total']));
invoice.save().then(function(invoice){
res.json(invoice);
});
});
但是,当使用 POST 请求获取时,undefined 会以 req 的形式出现。获取请求正文不为空,我已经检查过了。
解决方案
app.post('/api/invoices',
(function(req, res) {
let invoice = Invoice.build(_.pick(req.body, ['customer_id', 'discount', 'total']));
invoice.save().then(function(invoice){
res.json(invoice);
});
});
不要使用路由....
推荐阅读
- javascript - 如何使用 JavaScript 选择最接近的 HTML5 元素?
- terraform - 使用 for_each 在 Terraform 中创建一组资源,也通过模块?
- mne-python - 在 MNE Python 中处理长时期时如何拒绝坏段
- dart - Dart中构造函数命名参数的继承
- python - pos_hint、DragBehavior 和 FloatLayout - 可能的冲突 - 如何解决?
- ios - 为什么我的自定义 CSS 文件类型不显示供 iOS 模拟器上的 FilePick 选择?
- python - Python中的列排列
- javascript - document.documentElement.clientWidth 与 window.innerWidth 性能
- html - 如何使图像适合不同的屏幕分辨率?
- php - 使用 eloquent 向刀片显示 laravel 数据时出错