Express是一个非常好用的web框架,它可以应用与网站、博客、管理系统等等。当我们开发网站等应用的时候,一般都会用数据库来保存数据。这时就需要jdbc这样的驱动来保存连接数据库。
Npmjs.com上提供了丰富的第三方模块,mysql模块就是其中之一,它与mysql数据库同名,是mysql数据库的驱动,用javascript编写的,无需编译。
Hello mysql
先来创建一个mysql的示例,
创建一个nodejs-mysql工程:
mkdir nodejs-mysql
cd nodejs-mysql
npm init
npm install
#安装mysql模块
npm install mysql
准备数据库:
PS. 这是一张图片,这段脚本中可能有什么关键字吧,死活都不能发布,只能用图片了。
代码index.js:
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : 'root',
database : 'nodejs'
});
connection.connect();
connection.query('select * from user', function(err, rows, fields) {
if(err) throw err;
for (var i=0;i <rows.length;i++){
console.log('username:'+rows[i].username);
}
});
connection.end();
运行结果:
lee@mypc ~/works/nodejs/study25/nodejs-mysql $ node index.js
username:admin
mysql是一个很好的第三方模块,功能非常强大。然而我习惯了javaEE中的hibernate,习惯了ORM而不是sql语句。所以我浅尝辄止了mysql之后就去寻找下一个第三方模块。
Node-orm是一个node.js的object-relational-mapping框架。它似乎有过好几个名字,orm、node-orm、node-orm2。能支持mysql、mariadb、postgresql、sqlite、mongodb等数据库。
Hello node-orm
nodejs-orm.js:
var orm = require("orm");
orm.connect('mysql://root:root@localhost:3306/nodejs', function(err, db){
if (err) throw err;
var User = db.define("user", {
id :Number,
name :String,
username :String,
password :String,
birthday :Date
});
User.find({}, function(err, items) {
//console.log(items.length);
for(var i=0;i<items.length;i++){
console.log('username:'+items[i].username);
}
});
});
运行结果:
lee@mypc ~/works/nodejs/study25/nodejs-mysql $ node nodejs-orm.js
username:admin
Express与node-orm
Node-orm可以以中间件的形式跟express结合。
来看一个实例
创建一个express项目:
express express-orm
cd express-orm
npm install
npm install orm
npm install mysql
修改app.js:
...
var orm = require("orm");
...
app.use(orm.express("mysql://root:root@localhost:3306/nodejs", {
define: function (db, models, next) {
models.User = db.define("user", {
id :Number,
name :String,
username :String,
password :String,
birthday :Date
});
next();
}
}));
...
修改routes/users.js:
...
router.get('/', function(req, res, next) {
req.models.User.find(function(err, users){
if(err){
res.send(err);
}
res.send(JSON.stringify(users));
});
});
...
运行并测试expres-orm:
npm start
lee@mypc ~/works/nodejs/study25/express-orm $ curl http://localhost:3000/users
[{"id":1,"name":"lee","username":"admin","password":"admin","birthday":"1988-08-07T23:08:08.000Z"}]