摘要:譯者飛龍來源安裝所支持的版本支持。,和版本的測試在上運行。如果你使用了,你可能想使用這一簡單的中間件,使集成變得更容易。在多個連接之間定義的模型會在中連接。不要忘記在之前使用它,最好在你的公共素材文件夾之后。
安裝譯者:飛龍
來源:Object Relational Mapping
npm install orm所支持的Node.js版本
支持 0.8, 0.10, 0.12, iojs-1.5 。
0.10.x,0.12.x 和 iojs-1.5 版本的測試在 Travis CI 上運行。如果你想要的話,可以在本地運行測試:
npm testDBMS 支持
MySQL & MariaDB
PostgreSQL
Amazon Redshift
SQLite
MongoDB (beta版,到現(xiàn)在為止缺少聚合)
特性創(chuàng)建模型,同步,刪除,批量創(chuàng)建,獲取,查找,移除,計數(shù),聚合函數(shù)
創(chuàng)建模型的關(guān)聯(lián),查找,檢查,創(chuàng)建和移除
定義自定義的驗證器(有一些內(nèi)建的驗證器,會在保存之前檢查實例的屬性 -- 詳見enforce
模型實例的緩存和一致性(兩次獲取表中的一行,獲取到相同的對象,修改其中一個就是修改全部)
插件:MySQL FTS,Pagination (分頁),Transaction (事務(wù)),Timestamps (時間戳),Migrations (遷移)
介紹這是一個 Node.js 對象關(guān)系映射模塊。
示例:
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(...); });
你可以多次調(diào)用orm.express來獲取多個數(shù)據(jù)庫的連接。在多個連接之間定義的模型會在req.models中連接。不要忘記在app.use(app.router)之前使用它,最好在你的公共素材文件夾之后。
示例請見examples/anontxt,里面有一個基于express的應(yīng)用示例。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/17527.html
摘要:編程書籍的整理和收集最近一直在學習深度學習和機器學習的東西,發(fā)現(xiàn)深入地去學習就需要不斷的去提高自己算法和高數(shù)的能力然后也找了很多的書和文章,隨著不斷的學習,也整理了下自己的學習筆記準備分享出來給大家后續(xù)的文章和總結(jié)會繼續(xù)分享,先分享一部分的 編程書籍的整理和收集 最近一直在學習deep learning深度學習和機器學習的東西,發(fā)現(xiàn)深入地去學習就需要不斷的去提高自己算法和高數(shù)的能力然后...
摘要:譯者飛龍來源如果你需要從一個模型中獲取一些聚合值,你可以使用。下面通過一個例子來展示可以傳遞一個含有屬性的來選擇僅僅保留一小部分屬性。方法也會接收一個來定義條件。 譯者:飛龍 來源:Aggregation 如果你需要從一個模型中獲取一些聚合值,你可以使用Model.aggregate()。下面通過一個例子來展示: Person.aggregate({ surname: Doe })...
摘要:回調(diào)函數(shù)只在連接建立成功或失敗時調(diào)用。如果你愿意的話,可以不傳入回調(diào)函數(shù),而是監(jiān)聽事件。問題排除如果你在連接數(shù)據(jù)庫的時候遇到了如下錯誤你可以嘗試添加參數(shù) 譯者:飛龍 來源:Connecting to Database 在連接之前,你需要一個受支持的驅(qū)動。下面是一些測試過的驅(qū)動及其版本,把你所需要的加入到package.json中。 驅(qū)動 npm 包 版本 mysql my...
摘要:譯者飛龍來源設(shè)置用于儲存鍵值對。設(shè)置對象是默認值上的實例,之后會為每個連接和每個定義過的建立快照。 譯者:飛龍 來源:Settings 設(shè)置用于儲存鍵值對。設(shè)置對象是orm(默認值)上的實例,之后會為每個db連接和每個定義過的Model建立快照。所以orm.settings上的更改只會作用于更改之后建立的連接,而db.settings會作用于更改之后定義的模型。 var orm =...
摘要:譯者飛龍來源在連接之后,你可以使用連接對象來定義你的模型。你需要指定模型的名稱,一個用于描述的屬性和一些可選的選項。在這個例子中,有個模型方法叫做。接收的第一個對象第二個參數(shù)被稱為屬性對象,它定義了所有的屬性。在屬性修改時自動保存模型。 譯者:飛龍 來源:Defining Models 在連接之后,你可以使用連接對象(db)來定義你的模型。你需要指定模型的名稱,一個用于描述的屬性和...
閱讀 653·2021-11-23 09:51
閱讀 3600·2021-11-15 11:38
閱讀 927·2021-10-14 09:42
閱讀 3166·2021-09-29 09:35
閱讀 2104·2021-09-03 10:33
閱讀 769·2021-07-30 16:33
閱讀 1558·2019-08-30 15:55
閱讀 1841·2019-08-30 14:04