node.js – 具有Sails.js的事务性SQL

所以我一直在玩NodeJS / Express一点点,我真的很想尝试重写一个相对较大的边项目使用一个完整的 JavaScript堆栈,只是为了看看它将如何工作. Sails.js似乎是NodeJS后端的REST API的一个很好的选择,支持Web套接字,这正是我正在寻找的,但是我正在寻求解决的另一个问题是NodeJS中的事务性SQL.

我在NodeJS方面看到的大多数数据层/ orms在处理MySQL时似乎并不支持事务.与Sails.js(Waterline)提供的ORM也似乎不支持交易,这是奇怪的,因为我已经看到提到它的地方,虽然这些评论是相当老. Knex.js支持交易,所以我想知道是否容易替换ORM是Sails.js与此(或者如果Sails.js假定Waterline在核心框架中).

我也想知道除了书架之外,是否还有一个ORM建立在Knex.js之上,因为我不是Backbone Model / Collection系统的粉丝?

您仍然可以使用Model.query()直接编写SQL查询.由于这是一个异步功能,所以您必须使用promise或async来预定它.例如,使用MySQL适配器,异步和一个名为User的模型:

async.auto({
  transaction: function(next){
    User.query('BEGIN', next);
  },
  user: ['transaction', function(next) {
    User.findOne(req.param('id')).exec(next);
  }],
  // other queries in the transaction
  // ...
}, function(err, results) {
  if (err) {
    User.query('ROLLBACK', next);
    return next(err);
  }
  User.query('COMMIT', next);
  // final tasks
  res.json(results.serialize);
});
相关文章
相关标签/搜索