window下mongodb环境搭建

https://www.imooc.com/article/18438

1.下载mogodb

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访问

配置环境变量

使用mongodb创建用户

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.给使用数据库添加用户

你可能感兴趣的:(mongdb)