https://www.imooc.com/article/18438
2."C:\Program Files\MongoDB\Server\4.0"\bin"复制到电脑属性的环境变量
3.在c盘新建一个data文件夹 data里面新建db文件
使用cmd cd到在c盘根目录 mkdir data cd data mkdir db
4.在db文件启动 Mongod命令
5.安装robo3数据库 create 写入ip
6.src下新建一个Service
在service文件使用npm init -y
生成并初始化package.json 文件。
7.安装mongoose 数据建模库 npm install mongoose --save
在项目的service
文件夹下建立一个database
文件夹,用来存放和数据库操作有关的文件。在database文件夹下,建立一个init.js
文件,用来作数据库的连接和一些初始化的事情。/service/database/init.js
const mongoose = require('mongoose')
const db = "mongodb://127.0.0.1:27017/db_demo"
// glob:node的glob模块允许你使用 * 等符号,来写一个glob规则,像在shell里一样,获取匹配对应规则文件。
// resolve: 将一系列路径或路径段解析为绝对路径。
const glob = require('glob')
const {resolve} = require('path')
// 使用了glob.sync同步引入所有的schema文件,然后用forEach的方法require(引入)进来。这比你一条条引入要优雅的多。
exports.initSchemas = () =>{
glob.sync(resolve(__dirname,'./schema/','**/*.js')).forEach(require)
};
exports.connect = ()=>{
//连接数据库
mongoose.connect(db)
let maxConnectTimes = 0
return new Promise((resolve,reject)=>{
//把所有连接放到这里
//增加数据库监听事件
mongoose.connection.on('disconnected',()=>{
console.log('***********数据库断开***********')
if(maxConnectTimes<3){
maxConnectTimes++
mongoose.connect(db)
}else{
reject()
throw new Error('数据库出现问题,程序无法搞定,请人为修理......')
}
})
mongoose.connection.on('error',err=>{
console.log('***********数据库错误***********')
if(maxConnectTimes<3){
maxConnectTimes++
mongoose.connect(db)
}else{
reject(err)
throw new Error('数据库出现问题,程序无法搞定,请人为修理......')
}
})
//链接打开的时
mongoose.connection.once('open',()=>{
console.log('MongoDB connected successfully')
resolve()
})
})
}
初学定义一个用户Schema//基本数据模型 schema :用来定义表的模版,实现和MongoDB数据库的映射
在/servcie/database/
文件夹下新建一个schema
文件夹,然后新建一个User.js
文件
用户密码加密 bcryp
npm install --save bcrypt --registry=https://registry.npm.taobao.org
const mongoose = require('mongoose') //引入Mongoose
const Schema = mongoose.Schema //声明Schema
let ObjectId = Schema.Types.ObjectId //声明Object类型
//创建我们的用户Schema
const userSchema = new Schema({
UserId:ObjectId,
userName:{unique:true,type:String},
password:String,
createAt:{type:Date,default:Date.now()},
lastLoginAt:{type:Date,default:Date.now()}
})
// 用户密码加密 bcrypt是一种跨平台的文件加密工具
const bcrypt = require('bcrypt')
// 用pre方法每次进行保存时都进行加盐加密的操作。
const SALT_WORK_FACTOR=10 //加密强度
//每次存储数据时都要执行
userSchema.pre('save', function(next){
//let user = this
console.log(this)
bcrypt.genSalt( SALT_WORK_FACTOR,(err,salt)=>{ //genSalt加盐
if(err) return next(err)
bcrypt.hash(this.password,salt, (err,hash)=>{ //hash加密
if(err) return next(err)
this.password = hash
next()
})
})
})
//发布模型
mongoose.model('User',userSchema)
npm install --save koa 生成koa
在service中新建index.js
const Koa = require('koa')
const app = new Koa()
const mongoose = require('mongoose')
const {connect , initSchemas} = require('./database/init.js')
//立即执行函数 ,插入User数据
;(async () =>{
await connect()
initSchemas()
const User = mongoose.model('User')
let oneUser = new User({userName:'qinguanri',password:'123456'})
oneUser.save().then(()=>{
console.log('插入成功')
})
//读出已经插入进去的数据
let users = await User.findOne({}).exec()
console.log('------------------')
console.log(users)
console.log('------------------')
})()
app.use(async(ctx)=>{
ctx.body = 'hello Koa2
'
})
app.listen(3000,()=>{
console.log('[Server] starting at port 3000')
})
使用node index.js
来启动服务
2.添加db存储和日志存储文件夹
在c盘根目录新建一个data(可自定义名称)文件夹
在MongoDB文件夹中创建文件
1.data(存放数据库信息)
2.logs的文件中新建Mongo.log文件
3.etc(配置信息) 在etc 中新建Mongo.conf
把下面信息用 Editplus复制进去
打开mongo.conf文件,修改如下:
#数据库路径
dbpath=d:\MongoDB\data\
#日志输出文件路径
logpath=d:\MongoDB\logs\mongodb.log
#错误日志采用追加模式,配置这个选项后mongodb的日志会追加到现有的日志文件,而不是从新创建一个新文件
logappend=true
#启用日志文件,默认启用
journal=true
#这个选项可以过滤掉一些无用的日志信息,若需要调试使用请设置为false
quiet=false
#端口号 默认为27017
port=27017
#指定存储引擎(默认先不加此引擎,如果报错了,大家在加进去)
storageEngine=mmapv1
3.添加服务配置环境变量, 启动Mongod
1.打开cmd
2.cd "C:\Program Files\MongoDB\Server\4.0"\bin"
3.mongod --dbpath D:\Mogodb\data //指定数据贮存位置
访问http://localhost:27017
使用service访问
配置环境变量
1.创建管理员
非授权的模式启动MongoDB
非授权:
linux/Mac : mongod -f /MongoDB/etc/mongo.conf
windows : mongod --config c:\MongoDB\etc\mongo.conf 或者 net start mongodb (前提是mongo安装到了服务里面)
备注:
/mongodb/etc/mongo.conf 位mongo配置文件所在的地址
授权:
mongod -f /mongodb/etc/mongo.conf --auth
备注:
1.--auth代表授权启动,需要帐号密码才能访问
2.auth=true可以加到mongo.conf配置文件里面去进行统一管理
1.通过非授权的方式启动mongo
2.创建admin数据库
use admin
3.添加管理员用户
db.createUser({user:"admin",pwd:"123456",roles:["root"]}) //roles管理员的角色
备注:用户名和密码可随意定
4.认证
db.auth("admin", "123456")
三.以授权的方式启动Mongo,给使用的数据库添加用户
1.切换数据库
use test
2.创建用户
db.createUser({user: "root", pwd: "123456", roles: [{ role: "dbOwner", db: "test" }]})
3.通过客户端连接test数据库
2.授权认证
3.给使用数据库添加用户