【发布时间】:2014-09-22 23:57:30
【问题描述】:
我是 node.js 和 express.js 的新手。我正在尝试创建一个像这样工作的待办事项应用程序: 我有一个包含单个待办事项列表的待办事项 mongodb。这些列表将任务分类为未完成或已完成。例如:
{
Todos: {
Todo: {
"_id" : ObjectId("5202b481d2184d390cbf6eca"),
finished: ['walk dog', 'do dishes'],
unfinished: ['clean room']
}
Todo: {
"_id" : ObjectId("5202b49ad2184d390cbf6ecb"),
finished: ['clean car', 'make dinner'],
unfinished: ['write this damn web app ']
}
}
}
我想为每个待办事项列表创建新页面,以便列表的位置如下:http://website.com/5202b49ad2184d390cbf6ecb
所以我的问题是,我怎样才能像这样动态创建 URL?
谢谢!
编辑:
我将此代码添加到 routes/index.js:
/* POST to New todo list service */
router.post('/:id', function(req, res) {
var db = req.db;
var tasks = db.get('taskscollection');
tasks.insert({
"id":req.params.id,
"finished":[""],
"unfinished":[""]
}, function(err, doc) {
if (err) {
res.send("there was a problem with adding a new tasklist");
}
else {
res.location("/:id");
res.redirect("/:id");
}
});
});
这个代码到 index.jade:
form#formNewTask(name='newtask', method='post', action='/:id')
button#btnSubmit(type="submit") New Task List
但是当我点击按钮时,我被重定向到 localhost:3000/:id 并且我得到一个 404 未找到。我在这里错过了什么?
另外我如何为新页面创建翡翠模板?
编辑 2:
我将 index.js 更改为如下所示:
/* POST to New todo list service */
router.post('/tasks/:_id', function(req, res) {
var db = req.db;
var tasks = db.get('taskscollection');
tasks.insert({
"finished":[""],
"unfinished":[""]
}, function(err, doc) {
if (err) {
res.send("there was a problem with adding a new task\
list");
}
else {
res.location("/tasks/"+req.params.id);
res.redirect("/tasks/"+req.params.id);
}
});
});
我的 index.jade 现在有了这个:
form#formNewTask(name='newtask', method='post', action='/tasks/'+_id)
button#btnSubmit(type="submit") New Task List
现在,当我单击新任务时,它会将我带到 localhost:3000/tasks/undefined。这是否表明它没有在数据库中创建新条目?我认为我的前端jade文件是错误的,但我不确定。
【问题讨论】:
标签: javascript node.js mongodb express pug