Windows下mongodb環境構築

6538 ワード

https://www.imooc.com/article/18438
1.mogodbのダウンロード
2.「C:Program FilesMongoDBServer4.0」bin「コンピュータ属性にコピーする環境変数」
3.cディスクの新しいdataフォルダdataにdbファイルを新規作成する
cmd cdをcディスクルートディレクトリmkdir data cd data mkdir dbに使用
4.dbファイルでMongodコマンドを起動する
5.robo 3データベースcreate書き込みipのインストール
6.srcで新規作成Service  サービスファイルでnpm init -yを使用してpackageを生成して初期化する.jsonファイル.
7.mongoseデータモデリングライブラリnpm install mongose--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
サービスで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でコピーします
開けて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:Mogodbdata//データ格納場所の指定
アクセスhttp://localhost:27017
 
サービスアクセスの使用
環境変数の設定
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.使用データベースへのユーザーの追加