天天看點

Node +MongoDB 搭建背景的全過程Node + mongoDB 搭建背景的全過程

Node + mongoDB 搭建背景的全過程

近期基于 vue-cil 搭建前端項目, express + mongoose 搭建背景,遇到了不少問題,總結部落格如下,有什麼不正确的地方,請大家批評指正^ _ ^!

mongodb 是 NoSQL 非關系型資料庫。
mongoose是 mongodb 的一個對象模型工具,是基于 node-mongodb-native 開發的 mongodb 的 nodejs 驅動,可以在異步的環境下執行。同時它也是針對 mongodb 操作的一個對象模型庫,封裝了 mongodb 對文檔的一些增删改查等常用方法,讓nodejs操作 mongodb 資料庫變得更加容易。
           

一、Mac下mongodb的安裝與配置

1、 安裝mongodb:

brew install mongodb
           

2、安裝成功之後,啟動 mongodb

mongod
           

3、執行 mongod ,啟動 mongodb 失敗,顯示如下:

Node +MongoDB 搭建背景的全過程Node + mongoDB 搭建背景的全過程

原因 : 啟動 mongodb 之前,要先建立一個mongodb預設的資料寫入目錄:

sudo mkdir -p /data/db
           

給剛才建立的資料庫目錄賦予權限

sudo chown -R 使用者名 /data
           

如下圖所示:

Node +MongoDB 搭建背景的全過程Node + mongoDB 搭建背景的全過程

4、再次啟動

mongod
           

5、若啟動成功,可以通過http通路該資料庫,mongodb使用了27017端口,是以在浏覽器中打開 http://localhost:27017

出現如下圖所示提示,即說明連接配接成功。預設的情況下,關閉shell,mongodb就停止運作了 如果想在背景運作,啟動時隻需添加 --fork函數即可

Node +MongoDB 搭建背景的全過程Node + mongoDB 搭建背景的全過程

小結:

mongod 是用來連接配接到mongodb資料庫伺服器的,即伺服器端。
mongo 是用來啟動MongoDB shell的,是mongodb的指令行用戶端。
           

二、安裝 MongoDB可視化工具 RoboMongo

下載下傳位址:https://robomongo.org/download

三、連接配接資料庫

dbase.js

let mongoose = require('mongoose');
/**
 * 連接配接
 */
mongoose.connect('mongodb://127.0.0.1:27017/learning',{useNewUrlParser: true});

/**
  * 連接配接成功
  */
mongoose.connection.on('connected', function () {    
    console.log('Mongoose connection succuss' );  
});    

/**
 * 連接配接異常
 */
mongoose.connection.on('error',function (err) {    
    console.log('Mongoose connection error: ' + err);  
});    
 
/**
 * 連接配接斷開
 */
mongoose.connection.on('disconnected', function () {    
    console.log('Mongoose connection disconnected');  
}); 


module.exports = mongoose;
           

四、啟動 node 服務

server.js

const fs = require('fs')
const path = require('path')
const express = require('express')
const session = require('express-session')
const bodyParser = require('body-parser')
const app = express()

require('./dbase')
app.use(bodyParser.json()) //解析json類型的請求體

app.get('*', function (req, res) {
    res.sendFile(path.join(__dirname, '../Learning/index.html'));
})

app.listen(process.env.PORT || 8000, function () {
    console.log("Listen port:8000...")
});
           

小結:

問題: 啟動

node

服務連接配接資料庫時,報錯如下圖所示:

Node +MongoDB 搭建背景的全過程Node + mongoDB 搭建背景的全過程

解決辦法:在 mongoose 5.x 版本中,連接配接資料庫時,不再使用 {useMongoClient: true}),而是 { useNewUrlParser: true }

五、 vue-cil 搭建的項目跨域問題

Vue-cli 建立的項目,可以直接利用 Node.js 代理伺服器,通過修改proxyTable接口實作跨域請求。在vue-cli項目中的config檔案夾下的index.js配置檔案中,修改 dev 裡面的

proxyTable: {}

項,如下所示:

proxyTable: {  
    '/api': {  //代理位址  
        target: 'http://127.0.0.1:8000/',  //需要代理的位址  
        changeOrigin: true,  //是否跨域  
        secure: false,    
        pathRewrite: {  
            '^/api': '/'   //本身的接口位址沒有 '/api' 這種通用字首,是以要rewrite,如果本身有則去掉  
        }
    }
}
           

重新開機項目npm run dev ,接口前加上“/api”即可實作跨域請求