nodejs中的事务支持

时间:2015-06-30 04:15:32

标签: node.js asynchronous transactions ejb vert.x

nodejs中是否有类似于EJB for EJB的事务支持。我似乎找不到任何东西。大多数帖子建议除了nodejs之外还使用EJB。

在这种情况下,vert.x会更好吗?我需要在异步模型上设置支付网关。想知道是否要使用vert.x或nodejs。

2 个答案:

答案 0 :(得分:1)

您可以将ORM用于支持Sequelize.js等事务的Node.js。虽然有一些限制但可以支持简单的实现。

以下是sequelize

的示例代码
 return sequelize.transaction().then(function (t) {
  return User.create({
    firstName: 'Homer',
    lastName: 'Simpson'
  }, {transaction: t}).then(function (user) {
    return user.addSibling({
      firstName: 'Lisa',
      lastName: 'Simpson'
    }, {transaction: t});
  }).then(function () {
    t.commit();
  }).catch(function (err) {
    t.rollback();
  });
});

答案 1 :(得分:0)

正如@Wangot 所指出的,各种 Node.js 包中都有事务,而 sequelize 是一个很棒的包,因为它可以连接到各种基于 SQL 的数据库。

如果您使用 sequelize,并且您来自 Java 背景,那么还可以查看 zb-sequelize npm 包。它通过添加 2 个装饰器极大地简化了事务管理:@Transactional@Tx

import { Transactional, Tx } from 'zb-sequelize';

@Transactional
function fooBar(@Tx transaction) {
  foo(transaction);
  bar(transaction);
}

@Transactional
function foo(@Tx transaction) {
}

@Transactional
function bar(@Tx transaction) {
}

如果您以前使用过 Spring,那么这可能看起来很熟悉。