Javascript sails.js:新创建的记录没有';刷新之前,请不要在页面上填充
我有一个正在原型化的小应用程序(我是sails的新手),在列表中有一个任务。简单的东西。但是,当我创建任务并在创建后转发到列表时,该任务不会出现在我的列表中。如果我进行页面刷新,它会进行 以下是代码片段: 在任务->创建中Javascript sails.js:新创建的记录没有';刷新之前,请不要在页面上填充,javascript,node.js,orm,model,sails.js,Javascript,Node.js,Orm,Model,Sails.js,我有一个正在原型化的小应用程序(我是sails的新手),在列表中有一个任务。简单的东西。但是,当我创建任务并在创建后转发到列表时,该任务不会出现在我的列表中。如果我进行页面刷新,它会进行 以下是代码片段: 在任务->创建中 List.findOne(req.session.List.id) .exec(function foundTasks (err, list) { Task.find({where: { list: list.id }, limit: 1, sort:
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()功能创建一个项目。它也发生在代码的其他地方(我有多个上下文添加)
使用此代码,如果我创建任务“Dothis1”,我将被重定向到我的任务列表,而“Dothis1”不在那里。如果我点击刷新,它会显示。如果我添加“执行此操作2”,那么我将被重定向到任务列表,并且只显示“执行此操作1”。在刷新之前,将显示“执行此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.save()的回调中的/list/show/:id