Bookshelf.js - 更新记录后,初始页面加载/查询显示旧记录。刷新数据正确显示后

时间:2016-06-13 12:13:05

标签: javascript mysql node.js bookshelf.js knex.js

当我使用bookshelf将列设置为null,并重定向到显示该数据的页面时,数据显示未更新的记录,直到我刷新。这是代码:

        Table.where({id: req.param.id}).fetch()
        .catch(function (err) {
            console.log(err);
        })
        .then(function (results) {
            results.set('other_column', null);
            results.save();
            results.refresh();
            // Redirect to orders page
            res.redirect('/landing-page');
        });

着陆页查询是:

        Table.where({id: req.param.id}).fetch()
        .catch(function (err) {
            console.log(err);
        })
        .then(function (results) {
            data.results = results.attributes;
            res.render('display-page', data);
        });

有谁知道如何获取更新的记录,或者让我知道我是否错误地更新了记录?任何帮助解决这个问题都将非常感激,因为在用户刚更新后,我无法使用旧数据呈现页面...

1 个答案:

答案 0 :(得分:1)

您正在编写保存数据,如同步代码,因此save()可能(通常会)发生 AFTER 刷新()。尝试将其更改为:

    Table.where({id: req.param.id}).fetch()
    .catch(function (err) {
        console.log(err);
    })
    .then(function (results) {
        return results
          .set('other_column', null)
          .save();
    })
    .then(function (results) {  // results should now include the saved data
        // Redirect to orders page
        res.redirect('/landing-page');
    });