Node.js + sequelize + express transaction

时间:2015-10-08 11:34:11

标签: javascript node.js transactions sequelize.js acid

Hy,我是nodejs和sequelize world的新手(来自java + spring)。 我有一个关于如何在nodejs和sequelize中使用的事务的问题。我可以使用控制器中的事务并使用continuation-local-storage模块,如下所示:

router.post('/client/new', function (req, res, next) {
    models.sequelize.transaction({
        autocommit: false
    }, function (t) {
        function insertClient(company) {
            var body = _.extend({}, req.body);
            body.id_company = company.id;
            return models.Client.create(body);
        }

        return models.Company.find({
            where: {
                id: req.body.company.id
            }
        }).then(function (company) {
            if (company) {
                return insertClient(company);
            } else {
                return models.Company.create(nome: req.body.company).then(function (company) {
                    return insertClient(company);
                });
            }
        });
    }).then(function (client) {
        return res.json({
            client: client
        });
    }).catch(function (err) {
        next(err);
    });
});

但这种方式有问题,如果客户端连接在下载正文时已中止提交。当请求完成时,我有什么办法可以做到这一点?或者最好的方法是如何做到这一点? 有没有其他REST或ORM框架可以做这样的事情? (承诺完成请求)

感谢您的时间和耐心。

0 个答案:

没有答案