数据库的学习
- 数据库
是用来存储数据的东西
- 结构数据库(SQL)
老式的数据库
- 数据库
- 表
- 字段
一个数据库中可以又多张表,一张表中可以又多个字段
- 数据处理不够灵活,但是安全性较高
- 非结构数据库(NoSQL)
- 数据库
- 集合
- 文档
数据处理灵活,但是安全性低
mongoDB 的使用
- 第一个要设置对应的路径,用来放置对应的数据库的配置文件以及对应的一些数据库文件
- 然后相当于打开数据库,通过
mongoD --dbpath C:\mongo
路径名称来打开数据库
- 注意:数据库打开不能关闭,就是不能把对应的命令行终端关闭
- 需要再创建一个新的命令行终端
- 使用 mongo 命令设置环境
- 可以通过
show dbs
查看数据库
- 可以通过
use
来创建数据库,也可以通过这个命令来使用数据库
- 如果没有这个数据库,
use
就表示创建数据库,如果要是有,就表示使用这个数据库
- 然后我们需要设置数据,注意我们操控的是数据库中的集合,就是操控集合
- 通过对应的命令来操控集合
- 我们通过命令行操控集合的时候,如果没有对应的集合,系统会自动创建该集合
- mangoDB 安装之后是局部的,需要操作环境变量将其提升至全局
数据库的使用
var express = require('express');
var MongoClient = require('mongo').MongoClient;
//当接受到请求后,就去链接数据库
var app = express();
app.get('/',function(req,res){
//连接数据库
//第一个参数表示数据库的地址
var dataBaseUrl = "mongodb://localhost:27017/test1"
//连接数据库是一个异步操作
//凡事异步操作都需要回调
MongoClient.connect(dataBaseUrl,function(err,db){
//err 表示错误,就是表示如果有错,那么表示对应的数据库没有链接成功
//db 可以用来操控数据库中的集合,进行增删改查
if(err){
console.log('数据库连接失败');
return;
};
//连接成功后,我们就可以往数据库的集合中添加文档数据
//如果集合也不存在,系统会自动创建
//如果没有集合,后台系统会自动创建集合
//插入数据的时候,也是异步的,所以也需要回调
db.collection('teacher').insertOne({'name':'xiaoming','age':18},function(err.result){
if(err){
console.log('插入数据失败');
return;
};
res.send(result);
//数据库在使用完毕后要手动关闭
db.close();
})
})
})
app.listen(3000);
var expres = require('express');
var ejs = require('ejs');
var MongoClient = require('mongodb').MongoClient;
var app = expres();
//设置渲染模板
app.set('view engine','ejs');
/*当接受到请求后,获取数据后,然后渲染界面*/
//设置连接数据库的地址
var dataBaseUrl = 'mongodb://localhost:27017/test1';
app.get('/',function (req,res) {
MongoClient.connect(dataBaseUrl,function (err,db) {
if (err) {
console.log('连接数据库失败');
return;
}
//获取数据库中的内容然后,给使用ejs给对应的界面设置
//拿出的数据是一个游标,我们可以通过each方法来遍历游标
//不可以理解成集合
var cursor = db.collection('teacher').find();
//设置一个数组用来记录每一条dom
var resut = [];
//遍历游标
cursor.each(function (i,dom) {
//dom表示每一条记录
//所以只要这个记录不是空,我们就记录这个文档(每一条数据json)
if(dom !=null){
//添加
resut.push(dom);
}else{
//表示遍历完成
// 渲染界面
res.render('index',{
result:resut
});
//关闭数据库
db.close();
}
})
})
});
//设置添加的路由
app.get('/add',function (req,res) {
//渲染界面
res.render('add');
});
//设置提交路由
app.get('/submitData',function (req,res) {
//插入数据
//获取提交的参数
var name = req.query.name;
var age = req.query.age;
//连接数据库
MongoClient.connect(dataBaseUrl,function (err,db) {
//错误处理
if(err){
console.log('数据库连接失败');
return;
}
//插入数据 db.collection('teacher').insertOne({'name':name,'age':age},function (err,result) {
if(err){
console.log('插入失败');
}
res.send('插入数据成功');
db.close();
})
})
})
app.listen(3000);
封装增删改查功能
/*我就把和数据库相关的操控数据的操作都放在这个js文件中
* \以后想要使用数据库操控数据,我们只需要把这个文件到人,然后始用对应的方法就可以
* 实现增加,修改,删除,查找
* */
//因为增加删除修改以及查找都需要连接数据库,所以为了方便,我们最好把连接数据库的代码封装成一个函数
//1.封装一个连接数据库的函数
var MongoClient = require('mongodb').MongoClient;
function _conmect(callBack) {
//1.获取连接的数据库,当连接数据库的时候,如果没有对应的数据库,系统会自动创建
var url = 'mongodb://localhost:27017/test1';
//2.连接
MongoClient.connect(url,function (err,db) {
//当连接完成数据库后,我们需要做对应的数据库的增加删除修改以及查询操作
//需要涌到db,我们需要把对应的这些操作放在函数中,所以在对应的函数中我们需要使用db
//需要把db传递给别的函数,可以使用回调
callBack(err,db);
})
};
//2.实现插入功能
//这里需要三个参数
//第一个:表示插入的集合
//第二个表示插入的数据,就是一个json
//第三个表示,插入的返回的结果,返回的结果一把使用回调
exports.inserOne = function (collectionName,json,callBack) {
//调用方法连接数据库,然后做对应的操作
_conmect(function (err,db) {
db.collection(collectionName).insertOne(json,function (err, result) {
callBack(err,result);
db.close();
})
})
};
///3.实现查询
//第一个参数表示集合的名称
//第二个表示查询的条件
//第三个表示回调
exports.find = function (collectionName,json,callBack) {
_conmect(function (err,db) {
var result = [];
//
var cursor = db.collection(collectionName).find(json);
//遍历游标
cursor.each(function (err,dom) {
//如果dom不为空就添加,如果为空返回对应的结果,关闭数据库
if(dom != null){
result.push(dom);
}else{
//把数据传递出去
callBack(err,result);
db.close();
}
})
})
};
//4.删除
exports.removeMany = function (collectionName,json,callBack) {
_conmect(function (err,db) {
//删除数据
db.collection(collectionName).removeMany(json,function (err,result) {
callBack(err,result);
db.close();
})
})
};
//5.修改,修改必须首先根据第一个json找到对应的数据,然后根据第二个json来去顶改成的数据
//所以需要四个参数,定义json表示要查找的数据,第二个表示修改成为的数据
exports.updateMany = function (collectionName,json1,json2,callBack) {
_conmect(function (err,db) {
db.collection(collectionName).updateMany(json1,json2,function (err,result) {
callBack(err,result);
db.close();
})
})
}
/**
* Created by Administrator on 2017/6/20.
*/
var express = require('express');
var db = require('./models/db.js');
var app = express();
//设置增加 ,删除,修改和查找的路由
app.get('/insert',function (req,res) {
//调用数据库的方法
db.inserOne('teacher',{'name':'addData','age':20},function (err,result) {
if(err){
console.log('插入数据失败');
return;
}
res.send(result);
})
});
//处理查找的路由
app.get('/search',function (req,res) {
//使用对应的方法来查找对应的数据
db.find('teacher',{},function (err,result) {
if(err){
console.log(err);
return;
}
console.log(result);
res.send('查找成功');
})
});
//处理删除的路由
app.get('/delete',function (req,res) {
db.removeMany('teacher',{'name':'xiaoming'},function (err,result) {
if(err){
console.log(err);
return;
}
// res.write(result);
res.send('删除成功');
})
})
app.listen(3000);
网友评论