【问题标题】:nodejs, express and jade: problems with inserts from form to databasenodejs,express和jade:从表单插入数据库的问题
【发布时间】:2014-01-04 21:51:07
【问题描述】:

当我尝试在我的翡翠表单中输入数据时,我收到错误消息,说它是空的。有人可以帮我找出问题所在吗?

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 的新手,所有这些:) 提前致谢。

【问题讨论】:

    标签: node.js express pug


    【解决方案1】:

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

    应该是这样的:

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

    【讨论】:

      猜你喜欢
      • 2018-10-31
      • 2016-02-13
      • 1970-01-01
      • 1970-01-01
      • 2017-06-14
      • 2012-08-07
      • 2014-04-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多