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

Bookshelf.js - After updating record, initial page load/query displays old record. After refresh data displays correctly

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

        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);
        });

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

您写的是像同步代码一样保存数据,因此 save() 可能(而且经常会)在 refresh() 之后发生。尝试将其更改为:

    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');
    });