nodejs,express和jade:从表单到数据库的插入问题

时间:2014-01-04 21:51:07

标签: node.js express pug

当我尝试以我的玉形式输入数据时,我收到错误消息,指出它为空。有人可以帮我弄清问题是什么吗?

app.js

    var express = require('express');
var pg = require('pg');
var routes = require('./routes');
var user = require('./routes/user');
var http = require('http');
var path = require('path');

var app = express();
var conString = "postgres://abc:123@localhost/abc";
app.set('port', process.env.PORT || 3000);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.json());
app.use(express.urlencoded());
app.use(express.methodOverride());
app.use(express.cookieParser('your secret here'));
app.use(express.session());
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));

// development only,
if ('development' == app.get('env')) {
  app.use(express.errorHandler());
}

//app.get('/', routes.index);
app.get('/', function (req, res) {
  res.render('index',
  { title : 'Home' }
  )
});
app.get('/users', user.list);

app.post('/', function(req, res){
  var header = req.param('header', null);  // second parameter is default
  var body = req.param('body', null);
  console.log(header);
  console.log(body);
  pg.connect(conString, function(err, client, done, request, response) {
    client.on('drain', client.end.bind(client));//stänger av när alla queries är klara
    client.query("INSERT INTO post(member_id, title, body) VALUES ('1', $1, $2)", [header, body], function(err, result){
      if (err) {
                console.log(err);
               }
               else{
                res.send("success!");
               }
          });
    });
 });

http.createServer(app).listen(app.get('port'), function(){
 console.log('Express server listening on port ' + app.get('port'));
});

index.jade

extends layout
block content
    h1= title
    p Welcome to #{title}
    form(action='/',method='post')
        input(type='text',id='header',placeholder='header')
        input(type='text',id='body',placeholder='body')
        input(type='submit',name='submit',value='Submit')

layout.jade

doctype html

    html
        head
            title= title
            link(rel='stylesheet',href='/stylesheets/style.css')
        body
            block content
            p whaddup

然而,如果我使用curl --verbose -d 'header=abcd&body=1234' http://localhost:3000它可以正常工作,所以我相当肯定它是玉部分,但我不知道什么是错的。我是nodejs的新手,所有:) 提前谢谢。

1 个答案:

答案 0 :(得分:1)

这是与数据一起提交的表单控件的name,而不是id。实际上,您的表单提交的唯一值是submit按钮。

相反它应该是这样的:

 input(type='text', name='header', placeholder='header')
 input(type='text', name='body', placeholder='body')