Tom*_*ski 3 javascript node.js express
我正在尝试将POST数据从AngularJS发送到Express。目前,我正在尝试通过curl发送一些POST内容。
我已经尝试发送数据。它得到发送,我得到200作为响应。但是,每当我尝试通过req.body通过body-parser访问数据时,都会得到500和我在最底部发布的错误。
我对此事做了很多研究(过去4-5个小时...),我想我检查了以下常见问题:
我投降。StackOverflowers。请帮帮我。
卷曲:
curl -X POST -H "Content-Type: application/json" -d '{"username": "gala", "email": "ga@ga.g", "password": "123"}' localhost:3000/users
Run Code Online (Sandbox Code Playgroud)
express.js
// glowny plik przygotowujacy aplikacje express
// wczytanie zaleznosci
var express = require('express')
var stylus = require('stylus')
var parser = require('body-parser')
var morgan = require('morgan')
var compress = require('compression')
var methodOverride = require('method-override')
// przygotowanie aplikacji, obsluga middleware i na koncu zwrocenie obiektu aplikacji
module.exports = function() {
var app = express()
if (process.env.NODE_ENV === 'development') {
app.use(morgan('dev'))
} else if (process.env.NODE_ENV === 'production') {
app.use(compress())
}
app.use(parser.urlencoded({ extended: true }))
app.use(parser.json())
app.use(methodOverride())
// uzycie jade jako silnika szablonow dla html
app.set('views', __dirroot + '/app/views')
app.set('view engine', 'jade')
require(__dirroot + '/app/routes/index.server.route.js')(app)
require(__dirroot + '/app/routes/users.server.route.js')(app)
// mozliwosci uzywania statycznych plikow z folderu /public
app.use(express.static(__dirroot + '/public'))
return app
}
Run Code Online (Sandbox Code Playgroud)
users.server.route.js:
var users = require(__dirroot + '/app/controllers/users.server.controller.js')
module.exports = function(app) {
app.route('/users').post(function() {
users.create()
})
}
Run Code Online (Sandbox Code Playgroud)
users.server.controller.js:
var User = require('mongoose').model('User')
exports.create = function(req, res, next) {
console.log(req.body)
}
Run Code Online (Sandbox Code Playgroud)
错误信息:
TypeError: Cannot read property 'body' of undefined
at Object.exports.create (/home/gala/Projekty/cantr-crafting/app/controllers/users.server.controller.js:4:20)
at /home/gala/Projekty/cantr-crafting/app/routes/users.server.route.js:5:15
at Layer.handle [as handle_request] (/home/gala/Projekty/cantr-crafting/node_modules/express/lib/router/layer.js:82:5)
at next (/home/gala/Projekty/cantr-crafting/node_modules/express/lib/router/route.js:110:13)
at Route.dispatch (/home/gala/Projekty/cantr-crafting/node_modules/express/lib/router/route.js:91:3)
at Layer.handle [as handle_request] (/home/gala/Projekty/cantr-crafting/node_modules/express/lib/router/layer.js:82:5)
at /home/gala/Projekty/cantr-crafting/node_modules/express/lib/router/index.js:267:22
at Function.proto.process_params (/home/gala/Projekty/cantr-crafting/node_modules/express/lib/router/index.js:321:12)
at next (/home/gala/Projekty/cantr-crafting/node_modules/express/lib/router/index.js:261:10)
at methodOverride (/home/gala/Projekty/cantr-crafting/node_modules/method-override/index.js:77:5)
Run Code Online (Sandbox Code Playgroud)
我不太使用Node或Express,但是您至少不应该从路由处理程序中req进入users.create(),即
app.route('/users').post(function(req, res) {
users.create(req, res)
})
Run Code Online (Sandbox Code Playgroud)
甚至
app.route('/users').post(users.create);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12260 次 |
| 最近记录: |