javascript - sails.js:刷新之前,新创建的记录不会填充在页面上

标签 javascript node.js orm model sails.js

我有一个正在制作原型(prototype)的小应用程序(我对 sails 非常陌生),它在列表中有一个任务。简单的东西。但是,当我创建任务并在创建后转发到列表时,该任务不会出现在我的列表中。如果我刷新页面,它就会刷新。

这是代码片段:

在任务->创建

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() 功能创建项目。它也发生在我的代码中的其他地方(我有多个上下文添加)。

使用此代码,如果我创建任务“Do this 1”,我将被重定向到我的任务列表,并且“Do this 1”不在那里。如果我点击刷新,它就会显示。如果我添加“Do this 2”,那么我将被重定向到任务列表,并且仅显示“Do this 1”。直到我刷新,然后出现“Do this 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

关于javascript - sails.js:刷新之前,新创建的记录不会填充在页面上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27460215/

相关文章:

javascript - 通过express.static包含 Node 模块

javascript - aws 将对象上传到 S3 存储桶并将数据详细信息传递给 lambda

java - Hibernate中的bag标签有什么用?

javascript - 为什么通过表单发送数据时需要包含 enctype ="multipart/form-data"但通过 xmlhttprequest 发送时不需要

javascript - jQuery 1.7.1 - 文本输入的 'value' 未在 Firebug Inspect 元素中更新但在屏幕上

javascript - 从消息中提取 OTP 并在 React Native 中仅显示 OTP 值

javascript - Commander-js 的强制参数

javascript - 使用同一域上的服务器访问 kafka 模式注册表的 Rest API

mysql - SilverStripe ORM 中每个 mysql 位置 Y 周围半径 X 内的位置

c# - 使用 EF6 创建 ddex 的 Postgresql 失败