首页 > 解决方案 > 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 的形式出现。获取请求正文不为空,我已经检查过了。

标签: node.jsexpresssequelize.js

解决方案


    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);
        });
      });

不要使用路由....


推荐阅读