Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript sails.js:新创建的记录没有';刷新之前,请不要在页面上填充_Javascript_Node.js_Orm_Model_Sails.js - Fatal编程技术网

Javascript sails.js:新创建的记录没有';刷新之前,请不要在页面上填充

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:

我有一个正在原型化的小应用程序(我是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()功能创建一个项目。它也发生在代码的其他地方(我有多个上下文添加)

使用此代码,如果我创建任务“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