当我提交表格时。代码没有进入view.on处理程序。 是因为玉文件名与动作名不同吗?或者是因为我使用app.all。为什么路由器被命中但是view.on没有命中。?
mycart.jade
if user
a(class='button',href='/purchase') Purchase
else
form.signup-form(method="post" action="signup").row.col-sm-8.col-md-6
input(type='hidden', name='action', value='signup')
.form-group
label Name
.row
.col-sm-6.col-md-6
input.form-control.input-box(type='text', name='first', placeholder='First Name')
.col-sm-6.col-md-6
input.form-control.input-box(type='text', name='last', placeholder='Last Name')
.form-group
label Email
input.form-control.input-box(type='email', name='email', placeholder='Email')
.form-group
label Password
.row
.col-sm-6.col-md-6
input.form-control.input-box(type='password', name='password', placeholder='Password')
button(type='submit').btn.btn-success Purchase
路由器/ index.js
exports = module.exports = function(app) {
// Views
app.get('/', routes.views.index);
app.get('/mycart', routes.views.mycart);
app.all('/signup', routes.views.signup);
};
路由器/视图/ signup.js
var keystone = require('keystone');
exports = module.exports = function(req, res) {
var view = new keystone.View(req, res);
console.log("this log appears : "+JSON.stringify(req.body));
view.on('post', { action: 'signup' }, function(next) {
console.log('this long is not appearing');
});
};
控制台
GET /mycart 200 341.217 ms
this log appears :{"action":"signup","first":"sonal","last":"parekh","email":"sonal21@gmail.com","password":"sankar"}
POST /signup - - ms
答案 0 :(得分:1)
我遇到了同样的问题,但出于不同的原因(因此无论如何搜索都把我带到了这里)。对我来说,问题是通过改变routes / index.js中的一行来解决的:
app.get('/signup', routes.views.signup);
更改为:
app.all('/signup', routes.views.signup);
或:
app.post('/signup', routes.views.signup);
显然"得到"只处理HTTP GET请求,"所有"允许处理任何HTTP请求类型,更具体地说," post"处理HTTP POST请求..
答案 1 :(得分:0)
我发现自从您发布此内容以来已经过了很长时间,但是如果您仍然在努力,我认为您在{{1} {{1}呼叫next()
时错过了它功能。
view.on
我已经使用了您的代码,这是让它适用于我的唯一要求。