2014-12-13 66 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

相關問題