2014-12-13 62 views
0

我有一个小应用程序,我正在做一个任务列表中的原型(我非常熟悉sails)。简单的东西。但是,当我创建任务并在创建后转发到列表时,该任务不会显示在我的列表中。如果我做一个页面刷新它。sails.js:新创建的记录不会在页面上填充,直到刷新

下面的代码片段:

在任务 - >创建

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个”。

我想也许有一个异步问题(页面加载速度比正在创建和读取数据库中的记录?),但我已经添加了调试步骤来分析。

任何人有任何想法?

回答

2

我想你在保存列表之前重定向到显示页面。你必须这样做:在list.save()

回调

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

相关问题