如何使用express.js,mongoose和jade创建帖子请求

时间:2014-03-28 01:43:56

标签: javascript node.js mongoose pug

以下代码来自我正在做的教程。我想知道如何捕获和回复帖子请求。我认为这很容易理解,但问题如下。

首先是代码:

节点

app.post('/tasks', function(req, res){
  var task = new Task(req.body.task);   // This line 
  task.save(function (err) {
    if (!err) {
      res.redirect('/tasks/new');
    }
    else {
      throw err;
    }
  });
});

extends ../layout

block content
  h1 New task view

  form(role='form', method='post', action='/tasks')
    fieldset
      legend Add a task
      div.form-group
        label Task
        input(name='task[task]', class='form-control')  // This line
      button.btn.btn-primary(type='submit') Submit
      button.btn.btn-default(type='reset') Clear

猫鼬

mongoose.connect('mongodb://localhost/todo_development');
var Schema = mongoose.Schema;
var ObjectId = Schema.ObjectId;

var Task = new Schema({
  task: { type: String, required: true }
});

var Task = mongoose.model('Task', Task);

在上面的前两个代码块中,每个代码块都有一个名为“this line”的注释。在这些行中,单词 task 作为属性/属性。当我将这些更改为“oink”之类的其他内容时,会破坏代码。

例如,如果我这样做:

节点

  var task = new Task(req.body.oink);   // This line 

input(name='oink[oink]', class='form-control')  // This line

没有用。 我不确定为什么以及如何正确地发布帖子请求。 :(

2 个答案:

答案 0 :(得分:0)

尝试更改此行

var task = new Task(req.body.task);

对此:

var task = new Task(req.body);

我对Jade不是很熟悉,但据Submit Jade form我所知,你应该把你的输入命名为......

input(id='password',type='password',value='',placeholder='',name='password')

另外,你的猫鼬模式是什么样的?这可能会有所帮助。

您已将变量“任务”定义了两次。试试这个......

var taskSchema = new Schema({
  task: { type: String, required: true }
});

var Task = mongoose.model('Task', taskSchema);

答案 1 :(得分:0)

放: 输入(name =' task []',class =' form-control')//这一行

并把它: var task = new Task({' task':req.body.task}); //这一行

运气