资讯专栏INFORMATION COLUMN

orm2 中文文档

flybywind / 2568人阅读

摘要:译者飞龙来源安装所支持的版本支持。,和版本的测试在上运行。如果你使用了,你可能想使用这一简单的中间件,使集成变得更容易。在多个连接之间定义的模型会在中连接。不要忘记在之前使用它,最好在你的公共素材文件夹之后。

译者:飞龙

来源:Object Relational Mapping

安装
npm install orm
所支持的Node.js版本

支持 0.8, 0.10, 0.12, iojs-1.5 。

0.10.x0.12.xiojs-1.5 版本的测试在 Travis CI 上运行。如果你想要的话,可以在本地运行测试:

npm test
DBMS 支持

MySQL & MariaDB

PostgreSQL

Amazon Redshift

SQLite

MongoDB (beta版,到现在为止缺少聚合)

特性

创建模型,同步,删除,批量创建,获取,查找,移除,计数,聚合函数

创建模型的关联,查找,检查,创建和移除

定义自定义的验证器(有一些内建的验证器,会在保存之前检查实例的属性 -- 详见enforce

模型实例的缓存和一致性(两次获取表中的一行,获取到相同的对象,修改其中一个就是修改全部)

插件:MySQL FTS,Pagination (分页),Transaction (事务),Timestamps (时间戳),Migrations (迁移)

介绍

这是一个 Node.js 对象关系映射模块。

示例:

var orm = require("orm");

orm.connect("mysql://username:password@host/database", function (err, db) {
  if (err) throw err;

    var Person = db.define("person", {
        name      : String,
        surname   : String,
        age       : Number, // FLOAT
        male      : Boolean,
        continent : [ "Europe", "America", "Asia", "Africa", "Australia", "Antartica" ], // ENUM type
        photo     : Buffer, // BLOB/BINARY
        data      : Object // JSON encoded
    }, {
        methods: {
            fullName: function () {
                return this.name + " " + this.surname;
            }
        },
        validations: {
            age: orm.enforce.ranges.number(18, undefined, "under-age")
        }
    });

    // add the table to the database
    db.sync(function(err) { 
        if (err) throw err;

        // add a row to the person table
        Person.create({ id: 1, name: "John", surname: "Doe", age: 27 }, function(err) {
            if (err) throw err;

                // query the person table by surname
                Person.find({ surname: "Doe" }, function (err, people) {
                    // SQL: "SELECT * FROM person WHERE surname = "Doe""
                    if (err) throw err;

                    console.log("People found: %d", people.length);
                    console.log("First person: %s, age %d", people[0].fullName(), people[0].age);

                    people[0].age = 16;
                    people[0].save(function (err) {
                        // err.msg = "under-age";
                });
            });

        });
    });
});
Promise

你可以使用开启Promise的包装库。

Express

如果你使用了Express,你可能想使用这一简单的中间件,使集成变得更容易。

var express = require("express");
var orm = require("orm");
var app = express();

app.use(orm.express("mysql://username:password@host/database", {
    define: function (db, models, next) {
        models.person = db.define("person", { ... });
        next();
    }
}));
app.listen(80);

app.get("/", function (req, res) {
    // req.models is a reference to models used above in define()
    req.models.person.find(...);
});

你可以多次调用orm.express来获取多个数据库的连接。在多个连接之间定义的模型会在req.models中连接。不要忘记在app.use(app.router)之前使用它,最好在你的公共素材文件夹之后。

示例

请见examples/anontxt,里面有一个基于express的应用示例。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/17527.html

相关文章

  • AI开发书籍分享

    摘要:编程书籍的整理和收集最近一直在学习深度学习和机器学习的东西,发现深入地去学习就需要不断的去提高自己算法和高数的能力然后也找了很多的书和文章,随着不断的学习,也整理了下自己的学习笔记准备分享出来给大家后续的文章和总结会继续分享,先分享一部分的 编程书籍的整理和收集 最近一直在学习deep learning深度学习和机器学习的东西,发现深入地去学习就需要不断的去提高自己算法和高数的能力然后...

    huayeluoliuhen 评论0 收藏0
  • orm2 中文文档 8. 聚合

    摘要:译者飞龙来源如果你需要从一个模型中获取一些聚合值,你可以使用。下面通过一个例子来展示可以传递一个含有属性的来选择仅仅保留一小部分属性。方法也会接收一个来定义条件。 译者:飞龙 来源:Aggregation 如果你需要从一个模型中获取一些聚合值,你可以使用Model.aggregate()。下面通过一个例子来展示: Person.aggregate({ surname: Doe })...

    simpleapples 评论0 收藏0
  • orm2 中文文档 1. 连接到数据库

    摘要:回调函数只在连接建立成功或失败时调用。如果你愿意的话,可以不传入回调函数,而是监听事件。问题排除如果你在连接数据库的时候遇到了如下错误你可以尝试添加参数 译者:飞龙 来源:Connecting to Database 在连接之前,你需要一个受支持的驱动。下面是一些测试过的驱动及其版本,把你所需要的加入到package.json中。 驱动 npm 包 版本 mysql my...

    soasme 评论0 收藏0
  • orm2 中文文档 2. 设置

    摘要:译者飞龙来源设置用于储存键值对。设置对象是默认值上的实例,之后会为每个连接和每个定义过的建立快照。 译者:飞龙 来源:Settings 设置用于储存键值对。设置对象是orm(默认值)上的实例,之后会为每个db连接和每个定义过的Model建立快照。所以orm.settings上的更改只会作用于更改之后建立的连接,而db.settings会作用于更改之后定义的模型。 var orm =...

    shiguibiao 评论0 收藏0
  • orm2 中文文档 3. 定义模型

    摘要:译者飞龙来源在连接之后,你可以使用连接对象来定义你的模型。你需要指定模型的名称,一个用于描述的属性和一些可选的选项。在这个例子中,有个模型方法叫做。接收的第一个对象第二个参数被称为属性对象,它定义了所有的属性。在属性修改时自动保存模型。 译者:飞龙 来源:Defining Models 在连接之后,你可以使用连接对象(db)来定义你的模型。你需要指定模型的名称,一个用于描述的属性和...

    gnehc 评论0 收藏0

发表评论

0条评论

flybywind

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<