1 Node.js简介
Node.js是一个Javascript运行环境,简单的说 Node.js 就是运行在服务端的 JavaScript。实质是对Chrome V8引擎进行了封装。
V8引擎执行Javascript的速度非常快,性能非常好。Node.js是一个基于Chrome JavaScript运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用事件驱动, 非阻塞I/O 模型而得以轻量和高效,非常适合在分布式设备上运行数据密集型的实时应用。
2 Node.js数据库开发
本文包含了关系型数据库代表:MySQL和非关系型数据库代表:MongoDB在Node.js上的操作
MongoDB中:
- 文档:最小数据单位(类似于关系数据库中的行),由多个键值对组成
- 集合:一组文档组成一个集合,(集合类似关系数据库中的表),一个集合中的文档可以是各种各样的
- 数据库:一组集合组成一个数据库
首先,放一张本人整理的思维导图,便于大家了解整体内容:
2.1 用mongoose连接MongoDB(更简单)
mongoose中的一切由schema开始,它是一种以文件形式存储的数据库模型骨架,它定义了model中的所有属性
- 连接MongoDB
先安装模块:
npm install mongoose
然后连接MongoDB:
const mongoose =require('mongoose ');
const url = 'mongodb://localhost/database';
mongoose.connect(url,function(err){
...
});
//注:完整url为'mongodb://user:pass@localhost:port/database'
- 操作MongoDB
1.mongoose插入
//mongoose插入
mongoose.connect(uri,function(err){...}));
//实例化一个ArticleSchema
const ArticleSchema = new mongoose.Schema({
title: String,
author: String,
time: Date
});
//注册一个model
mongoose.model('Article',ArticleSchema)
//将文档插入集合
const Article = mongoose.model('Article');
var art = new Article({
title:'node.js',
author:'node',
time: new Date()
})
art.save(function(err){
...
})
2.mongoose查询
mongoose查询有两种方式,分别为:控制台查询和正常查询
控制台查询:
//mongoose查询
**1.控制台查询**
**切换至article数据库**
use article
**查看article数据库所有collection**
show collections
**查看名为articles的collection中的所有文档**
db.articles.find()
**返回查询到的第一条数据**
db.articles.findOne()
正常查询:
Article.find({},function(err, docs){
...
});
3.mongoose修改
//mongoose中可以直接在查询记录后修改记录的值,修改后直接调用保存即可
const Article = mongoose.model('Article');
//查询数据
Article.find({title:'node.js'},function(err, docs){
//修改数据
docs[0].title = 'javascript';
//保存修改后的数据
docs[0].save();
});
4. mongoose删除
//mongoose删除
//查询数据
Article.find({title:'node.js'},function(err, docs){
//返回的是一个符合查询条件的所有文档组成的数组,逐个删除文档
if(docs){
docs.forEach(function(ele){ele.remove();})
}
});
2.2 用node-mongodb-native连接MongoDB
注意:用 node-mongodb-native需要注意的是每次操作完 MongoDB都应该调用 close方法关闭 MongoDB
- 连接MongoDB
先安装模块:
npm install mongodb
然后连接MongoDB:
//连接MongoDB
var MongoClient =require('mongodb').MongoClient;
const url = 'mongodb://localhost:27017/database';
MongoClient.connect(url,function(err){
...
});
//注:完整url为'mongodb://user:pass@localhost:port/database'
- 操作MongoDB
1.node-mongodb-native插入
步骤:打开数据库->打开集合->插入数据->关闭数据库
- find() 一次查询多条
- insertMany() 一次插入多条,参数是数组格式
collection.insertMany([stu1,stu2,stu3],function(err,doc){
});
查询时需要转化为数组:
collection.find().toArray(function(err, docs){
});
2.node-mongodb-native查询
步骤:打开数据库->打开集合->查找文档->关闭数据库
collection.findOne({},function(err,doc){
});
3.node-mongodb-native修改
collection.updateOne({name:'jack'},{$set:{name:'rose'}},function(err,doc){
});
4.node-mongodb-native删除
collection.deleteOne({name:'jack'},function(err,doc){
});
2.3 连接MySQL
先安装模块:
npm install mysql
然后连接MySQL:
//连接MySQL
const mysql =require('mysql');
//创建连接
const collection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'secret'
});
//连接mysql
connection.connect(function(err){
...
});
终止连接:
//第1种方法
connection.end(function(err){
...
});
//第2种方法
connection.destroy();
//注:该方法也可以终止连接,会立即终止底层套接字,不会触发更多的事件和回调函数
- 操作MongoDB
1.MySQL插入
步骤:打开数据库->打开集合->插入数据->关闭数据库
//1.insertMany() 一次插入多条,参数是数组格式
collection.insertMany([stu1,stu2,stu3],function(err,doc){});
//2.find() 一次查询多条
查询时需要转化为数组:
collection.find().toArray(function(err, docs){});
2.MySQL删除修改查询
步骤:创建连接->连接mysql->query()执行SQL语句来操作数据
例如:查询数据,data是表名,rows是查询后返回的记录
- 无参数查询:
connection.query('SELECT * FROM data', function(err, rows){
});
- 有参数查询。query的第二个参数是可选参数,"?"代表占位符
const table = 'student';
connection.query('SELECT * FROM ?', [table],function(err, rows){
});
注:可使用 escape()方法防止SQL注入攻击(黑客提交给服务器中的数据中带有SQL语句),假设 userid是用户提供的数据
let sql = 'SELECT * FROM user WHERE userid=' + connection.escape(userid);