npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

waterline-transact

v0.0.8

Published

transaction for waterline

Downloads

6

Readme

基于 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