我有一个小应用程序,我在原型设置(我在帆上很新),在列表中有一个任务。简单的东西。但是,当我创建任务并在创建后转发到列表时,任务不会出现在我的列表中。如果我刷页面就行了。
以下是代码段:
在任务 - >创建
List.findOne(req.session.List.id)
.exec(function foundTasks (err, list) {
Task.find({where: { list: list.id }, limit: 1, sort: 'priority desc'})
.exec(function getTaskPriority (err, task) {
if (err) {
console.log(err);
req.session.flash = {
err: err
}
}
list.tasks.add({name: req.param('name'), list: req.session.List.id});
list.save(function(err) {});
});
res.redirect('/list/show/'+req.session.List.id);
});
});
在列表 - >显示
中show: function(req, res, next) {
List.findOne(req.param('id'))
.populate('tasks')
.exec(function foundTasks (err, r) {
req.session.List = r;
if (err) return next(err);
res.view({
name: r.name,
tasks: r ? r.tasks : []
});
});
},
当我创建普通项目时,这不会发生,只能通过.add()功能创建项目。它也发生在我的代码中的其他地方(我有多个上下文添加)。
使用此代码,如果我创建任务"执行此操作1",我将被重定向到我的任务列表并且"执行此操作1"不在这里。如果我点击刷新,它确实显示。如果我添加"执行此操作2",那么我将被重定向到任务列表,并且只有"执行此操作1"出现。直到我刷新,然后"做这个2"出现。
我想也许存在一个异步问题(页面的加载速度比在db中创建和读取记录的速度快?)但是我已经添加了调试步骤来解决这个问题。
有人有什么想法吗?
答案 0 :(得分:2)
我认为您在保存列表之前会重定向到显示页面。你必须这样做:
list.tasks.add({name: req.param('name'), list: req.session.List.id});
list.save(function(err) {
res.redirect('/list/show/'+req.session.List.id);
});
在/list/show/:id
list.save()