帮酷LOGO
0 0 评论
  • 显示原文与译文双语对照的内容
文章标签:ORM  记录  nodejs  act  Active  
Active record like ORM for nodejs

  • 源代码名称:openrecord
  • 源代码网址:http://www.github.com/PhilWaldmann/openrecord
  • openrecord源代码文档
  • openrecord源代码下载
  • Git URL:
    git://www.github.com/PhilWaldmann/openrecord.git
  • Git Clone代码到本地:
    git clone http://www.github.com/PhilWaldmann/openrecord
  • Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/PhilWaldmann/openrecord
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
  • OpenRecord

    Build StatusCoverage Statusnpm package versionDependency Status

    黑客,如用于nodejs的ORM

    目前有一个可用的nodejs ORMs,但没有一个与 ActiveRecord ( ruby ) 类似的语法。 OpenRecord有一个很好的语法,大量的特性,超过 1300个单元测试,可以轻松扩展 !

    安装

    npm install openrecord

    文档

    特性

    • sql ( + 活动活动)。MySQL。Postgres。REST和LDAP支持
    • 运行在 node v4上,最高可达 v6
    • 异步模式定义:你甚至可以暂时更改模型定义
    • 可选纤维支持
    • 自动字段定义加载( SQL ): 你不需要两次定义数据库字段 ! OpenRerecord将自动加载你的架构定义
    • 关系( hasMany,hasOne,通过,变形,交叉存储 )
    • 嵌套级联删除
    • 嵌套的立即加载
    • 嵌套创建
    • 嵌套更新
    • 嵌套联接
    • 验证
    • 范围:Makro类似于方法
    • 钩钩前后:用于验证。查找。创建。更新。销毁和其他操作。
    • 事件
    • 链接:所有内容都是可以链接的 !
    • promise
    • 迁移:SQL迁移是构建在
    • 插件支持:实际上 99%的OpenRecord是一个插件
    • 在SQL插件中构建:
      • stampable: 自动设置 created_atupdated_atupdater_id 或者 creator_id
      • paranoid: 软删除记录
      • 嵌套集:轻松生成树
      • 排序列表:不要担心列表
    • 。有超过 1300个测试

    用法

    var OpenRecord =require('openrecord');var sqlite =newOpenRecord({
     type:'sqlite3',
     file:'test.sqlite'});sqlite.Model('User', function(){
     this.hasMany('posts');
     this.scope('active', function(){
     this.where({active:true});
     });
    });sqlite.Model('Post', function(){
     this.belongsTo('user');
    });sqlite.ready(function(){
     var User =sqlite.Model('User');
     User.active().where({posts: {title_like:'openrecord' }}).include('posts').exec(function(records){
     console.log(records);
     });
    });

    示例

    钩子:

    sqlite.Model('User', function(){
     this.hasMany('posts');
     this.afterCreate(function(record, transaction, next){
     //send emailnext();
     })
    });

    同步( 通过光纤)

    sqlite.sync(function(){
     var user =User.find(1).exec();
     user.active=false;
     user.save();
    })

    交叉存储关系

    var sqlite =newOpenRecord({
     type:'sqlite3',
     file:'test.sqlite',
     global:true, //expose all Models as globals (default: false) name:'sqlite'});
    rest =newOpenRecord({
     type:'rest',
     url:'http://api.yourservice.com',
     name:'rest'});sqlite.Model('Book', function(){
     this.belongsTo('author', {store:'rest'});
    })rest.Model('Author', function(){
     this.hasMany('books', {store:'sqlite'});
    });sqlite.ready(function(){
     Book.include('author').where({created_at_lt:'1990-01-01'}).exec(function(books){
     //books[0].author })
    });

    如果你找到了一个 Bug,请通过发布页面报告。 请确保添加了带有 Bug 报告的单元测试 ! 提交请求请求之前,请确保所有测试仍在传递。



    文章标签:act  记录  nodejs  Active  ORM  

    Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语