Sails.js:新创建的记录在刷新之前不会填充到页面上
Posted
技术标签:
【中文标题】Sails.js:新创建的记录在刷新之前不会填充到页面上【英文标题】:sails.js: Newly created record doesn't populate on page until refresh 【发布时间】:2014-12-13 15:04:05 【问题描述】:我有一个小应用程序,我正在制作原型(我是 Sails 的新手),它在列表中有一个任务。简单的东西。但是,当我创建任务并在创建后转发到列表时,该任务不会出现在我的列表中。如果我刷新页面,它会这样做。
这里是sn-ps的代码:
在任务中->创建
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”不存在。如果我点击刷新,它会显示。如果我添加“Do this 2”,那么我将被重定向到任务列表,并且只出现“Do this 1”。直到我刷新,才会出现“Do this 2”。
我认为可能存在异步问题(页面加载速度比在数据库中创建和读取记录的速度要快?)但我添加了调试步骤来解决这个问题。
有人有什么想法吗?
【问题讨论】:
【参考方案1】:我认为您在保存列表之前会重定向到显示页面。你必须这样做:
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.save()
的回调中重定向到/list/show/:id
【讨论】:
以上是关于Sails.js:新创建的记录在刷新之前不会填充到页面上的主要内容,如果未能解决你的问题,请参考以下文章