Javascript 如何使用express.js、mongoose和jade创建POST请求
下面的代码来自我正在做的一个教程。我想知道如何捕获和响应post请求。我认为这很容易理解,但问题如下 首先是代码: 节点Javascript 如何使用express.js、mongoose和jade创建POST请求,javascript,node.js,mongoose,pug,Javascript,Node.js,Mongoose,Pug,下面的代码来自我正在做的一个教程。我想知道如何捕获和响应post请求。我认为这很容易理解,但问题如下 首先是代码: 节点 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 {
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);
var task = new Task(req.body.oink); // This line
input(name='oink[oink]', class='form-control') // This line
翡翠
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);
var task = new Task(req.body.oink); // This line
input(name='oink[oink]', class='form-control') // This line
猫鼬
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);
var task = new Task(req.body.oink); // This line
input(name='oink[oink]', class='form-control') // This line
在上面的前两个代码块中,每个代码块都有一个名为“thisline”的注释。在这些行中,单词task作为属性/属性。当我将这些更改为其他类似“oink”的内容时,它会破坏代码
例如,如果我这样做:
节点
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);
var task = new Task(req.body.oink); // This line
input(name='oink[oink]', class='form-control') // This line
翡翠
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);
var task = new Task(req.body.oink); // This line
input(name='oink[oink]', class='form-control') // This line
这并不难。
我不知道为什么也不知道如何正确处理POST请求(尝试更改此行
var task = new Task(req.body.task);
为此:
var task = new Task(req.body);
我对玉不是很熟悉,但据我所知,你应该把你的输入命名为
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);
付诸表决:
输入(name='task[],class='form-control')//此行
然后说:
var task=新任务({'task':req.body.task});//此行
运气可能使用
输入(name='oink')
?我不明白你为什么要用方括号重复它。教程是这样写的。这本书就是这样写的。我想这可能是一个jade约定或什么的。你的想法不起作用。我得到一个错误。500 TypeError:无法使用“in”操作符在adfI中搜索“\u id”。我发现括号引用了任务对象In模式问题的根源是输入的命名。请参见编辑。我添加了mongoose模式。我发现[task]引用了内部模式。您可以扩展上面的操作来解释这些更改吗?在jade文件中,名称“task”被调用为节点文件,但名称为[]就像节点文件中的一个变量,我不知道为什么不使用您的代码,但另一种方式是我如何使用它。不发送变量int[]的名称,创建变量i节点文件:{'task':req.body.task}.pdt:我想问题在于构造函数“proto”。对不起,英文版。