node.js学习笔记(25) express与数据库-阿里云开发者社区

开发者社区> felenwe> 正文

node.js学习笔记(25) express与数据库

简介: mysql模块是一个node.js的mysql数据库驱动,纯javascript编写,无需编译。Node-orm是一个node.js的object-relational-mapping框架,能支持mysql、mariadb、postgresql、sqlite、mongodb等数据库。
+关注继续查看

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


准备数据库:

3145388aabb69009c5d103641a59e75b725617dd

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"}]




版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
DevExpress学习01——下载与安装
记得刚接触编程时,虽然实现了功能,但用户界面十分丑陋,老师叫我们美化一下界面,不要千篇一律,当时觉得能够写出来功能就洋洋得意了,不觉得界面丑陋。后来,在程序比赛中,我接触了一种第三方控件,它可以快速实现控件、皮肤的美化,它就是以前常用的DotNetBar,其入门使用方法见:http://www.cnblogs.com/liweis/p/4195070.html DotNetBar下载地址: 早就听说了DevExpress比较强大了,今天终于来尝试一把。
1413 0
DevExpress学习03——label控件的背景色问题
今天使用了DevExpress的labelControl,发现拖放上去,其背景色和主窗体的背景一样,非常不谐调,把BackColor设置为透明也不行(Windows中的Label可以)。 没有办法,我用颜色拾取器,拾取到上方面板颜色是RGB(80,80,80),于是将labelControl背景色改为RGB(80,80,80)颜色就统一了。
973 0
AngularJS学习笔记1
简介   AngularJS 是一个为动态WEB应用设计的结构框架,提供给大家一种新的开发应用方式,这种方式可以让你扩展HTML的语法,以弥补在构建动态WEB应用时静态文本的不足,从而在web应用程序中使用HTML声明动态内容。
964 0
Python零基础学习笔记(四)——数据类型
python数据类型:Number(数字):包括整数/浮点数(小数)/复数String(字符串)Boolean(布尔值)None(空值)list(列表)tuple(元组)dict(字典)set(集合)
1235 0
Node.js爬取豆瓣数据
一直自以为自己vue还可以,一直自以为webpack还可以,今天在慕课逛node的时候,才发现,自己还差的很远。众所周知,vue-cli基于webpack,而webpack基于node,对node不了解,谈什么了解webpack。
1603 0
InnoDB的数据页结构
页是InnoDB存储引擎管理数据库的最小磁盘单位。页类型为B-tree node的页,存放的即是表中行的实际数据了。 InnoDB数据页由以下七个部分组成,如图所示: File Header(文件头)。
751 0
Node.js使用mongodb操作MongoDB数据库
Node.js使用mongodb操作MongoDB数据库
35 0
+关注
felenwe
不积跬步无以至千里
34
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载