waterline-transact
transaction for waterline
Last updated a year ago by myfjdthink .
Repository · Original npm · Tarball
$ cnpm install waterline-transact 
SYNC missed versions from official npm registry.

基于 waterline 的简单事务处理

安装

$ npm install waterline-transact

配置

需要配合 Sails.js 使用

在 sails 的./api/model 添加一个 Model Transaction.js

module.exports = {

  attributes: {
    //事务名
    name: {type: 'string'},
    //保存事务处理的一些消息,例如事务处理失败原因。
    msg: {type: 'string'},
    //事务状态 start,pending,finish,canceling,rollback...
    state: {type: 'string'},
    start_time: {type: 'date'},
    end_time: {type: 'date'},
    //事务操作的文档
    /**
     * {
     * coll   操作的表
     * act    动作  insert or update
     * docId  操作的对象的id
     * data   操作对象的数据
     * pre    update操作时,对象在update之前的状态
     * time   时间戳
     * }
     */
    changes: {type: 'array'}
  }
};

这个 Model 用于保存事务的操作记录。

在 bootsstrap.js 里将 sails 对象传入 var Transact = require('waterline-transact'); Transact.init(sails);

##使用 这个库在封装了 waterline 的 create 和 update 方法,需要事务操作时,使用本库提供的 txCreate 和 txUpdate 方法来替代。这样就会自动记录本次操作,方便回滚。

var Transact = require('waterline-transact');
Transact.transactionManager("正常事务", function (transactionId, taskCallback) {
  /**
   * @User Model
   * @transactionId 事务ID
   * @user_data 本次create操作保存的数据
   * 
   */
  Transact.txCreate(User, transactionId, user_data, function (err, cUser) {
    taskCallback(err, cUser);
  });
  
}, function (err, result) {
  //do some thing
})

##测试 需要在 sails 的./api/model 添加一个 Model User.js

module.exports = {
  attributes: {
    phone : { type: 'string', unique: true},
    created_from: { type: 'string'},

  }
};

将 test 目录下的 WaterLineTransct.test.js 放入 sails 的测试目录中,启动 sails 的测试即可。

Dependencies

License

The MIT License

Maintainers (1)
Downloads
Today 0
This Week 0
This Month 1
Last Day 0
Last Week 1
Last Month 6
Dependencies (2)
Dev Dependencies (0)
None
Dependents (0)
None

Copyright 2014 - 2017 © taobao.org |