Node +MongoDB 搭建後臺的全過程

Node + mongoDB 搭建後臺的全過程

近期基於 vue-cil 搭建前端項目, express + mongoose 搭建後臺,遇到了很多問題,總結博客以下,有什麼不正確的地方,請你們批評指正^ _ ^!html

mongodb 是 NoSQL 非關係型數據庫。
mongoose是 mongodb 的一個對象模型工具,是基於 node-mongodb-native 開發的 mongodb 的 nodejs 驅動,能夠在異步的環境下執行。同時它也是針對 mongodb 操做的一個對象模型庫,封裝了 mongodb 對文檔的一些增刪改查等經常使用方法,讓nodejs操做 mongodb 數據庫變得更加容易。

1、Mac下mongodb的安裝與配置

一、 安裝mongodb:前端

brew install mongodb

二、安裝成功以後,啓動 mongodbvue

mongod

三、執行 mongod ,啓動 mongodb 失敗,顯示以下:node

clipboard.png

緣由 : 啓動 mongodb 以前,要先新建一個mongodb默認的數據寫入目錄:mongodb

sudo mkdir -p /data/db

給剛纔新建的數據庫目錄賦予權限vue-cli

sudo chown -R 用戶名 /data

以下圖所示:shell

clipboard.png

四、再次啓動數據庫

mongod

五、若啓動成功,能夠經過http訪問該數據庫,mongodb使用了27017端口,所以在瀏覽器中打開 http://localhost:27017
出現以下圖所示提示,即說明鏈接成功。默認的狀況下,關閉shell,mongodb就中止運行了 若是想在後臺運行,啓動時只需添加 --fork函數便可express

clipboard.png

小結:npm

mongod 是用來鏈接到mongodb數據庫服務器的,即服務器端。
mongo 是用來啓動MongoDB shell的,是mongodb的命令行客戶端。

2、安裝 MongoDB可視化工具 RoboMongo

下載地址:https://robomongo.org/download

3、鏈接數據庫

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;

4、啓動 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服務鏈接數據庫時,報錯以下圖所示:

clipboard.png

解決辦法:在 mongoose 5.x 版本中,鏈接數據庫時,再也不使用 {useMongoClient: true}),而是 { useNewUrlParser: true }

5、 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」便可實現跨域請求

相關文章
相關標籤/搜索