【问题标题】:How to create posts requests with express.js , mongoose and jade如何使用 express.js 、 mongoose 和 jam 创建帖子请求
【发布时间】:2014-03-28 01:43:56
【问题描述】:

下面的代码来自我正在做的一个教程。我想知道如何捕获和响应发布请求。我以为这很容易理解,但问题如下。

首先是代码:

节点

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);

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

例如,如果我这样做:

节点

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

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

没用。 我不知道为什么也不知道如何正确地发帖请求。 :(

【问题讨论】:

  • 也许使用input(name='oink')?我不明白你为什么在方括号中重复它
  • 教程是这样写的。这本书就是这样来的。我想这可能是一个玉器公约之类的。你的想法行不通。我得到一个错误。 500 TypeError: 不能使用 'in' 运算符在 adf 中搜索 '_id'
  • 我发现括号引用了架构中的任务对象

标签: javascript node.js mongoose pug


【解决方案1】:

尝试更改此行

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')

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

您已经定义了变量“Task”两次。试试这个...

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

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

【讨论】:

  • 似乎问题的根源在于输入的命名。见编辑。
  • 我添加了猫鼬模式
  • 我发现 [task] 引用了架构内部
【解决方案2】:

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

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

运气

【讨论】:

  • 您能否扩展您在上面所做的工作来解释这些变化?
  • 在玉文件中,名称“任务”被称为节点文件,但 [] 中的名称就像节点文件中的变量,我不知道为什么不使用您的代码,但是另一种方式是我的说法。不发送变量 int [ ] 的名称,创建变量 i 节点文件:{'task':req.body.task}。 pdt:我认为问题在于构造函数“proto”。对不起英语。
猜你喜欢
  • 2019-03-10
  • 2021-07-25
  • 2021-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-28
  • 1970-01-01
  • 2019-09-27
相关资源
最近更新 更多