【Part2】用JS寫一個Blog (node + vue + mongoDB)

【Part1】用JS寫一個Blog (node + vue + mongoDB)

上一節先後端項目分別初始化完成,這一小節我就從後端項目開始寫。實現mongoDB數據庫的鏈接。vue

整理後端目錄

下面是經過express-generate生成的項目的目錄node

clipboard.png

bin/www是項目的啓動文件,啓動項目除了上次說的npm start,還能夠再命令後執行 node bin/www,其實這兩個命令是同樣的,只不過在package.json文件中二者創建了連接,以下圖
clipboard.pngmongodb

node_modules不用多說,項目的依賴都安裝於此
public是放置一些公共資源的文件夾,我之後也不會用到它,因此把他給刪掉了
router下的.js文件就是咱們寫API的地方了,爲了更直觀,我把router名字改成api,把裏面的文件名字分別改成post.jsadmin.js.(我把api分紅兩個文件,一個是與文章相關的,另外一個是與管理員相關的)
views是頁面的模板,由於咱們後端只提供數據接口,因此用不到頁面文件,我把他給刪掉了
app.js是整個項目的入口文件,至關於後端項目的大腦,它裏面的文件是按順序執行
package.json是關於咱們這個項目用到的依賴。
須要說明的是,須要在根目錄下建立一個models的文件夾用來初始化mongodb數據庫等一些操做的。
下面就是整理好的後端目錄docker

clipboard.png

安裝mongoDB數據庫

安裝方法在這裏很少說,網上資源一大堆,能夠去官網看官方文檔,我是利用Docker安裝的,方便本地調試。
安裝完成後不要忘記啓動mongodb數據庫

安裝mongoose

mongoosemongodb的一個對象模型工具,有了它,能夠很方便的操做mongodb數據庫,還不是很瞭解mongoose的小夥伴自行google,資料有不少。
命令行輸入 npm install mongoose --saveexpress

安裝完成後,首先要定義模型
models文件夾下新建一個post.js 定義文章的模型,填入內容npm

let mongoose = require('mongoose')  //引入mogoose

 //在 Mongoose 中,全部東西都從一個 Schema 開始。每個 schema 都映射到一個 MongoDb 的集合,並定義了該集合中的文檔的形式。
let postSchema = new mongoose.Schema({  
  title: String,   //規定文章的標題是字符串類型
  content: String  //規定文章的內容是字符串類型
})               
let postModel = mongoose.model('posts', postSchema)  //定義模型

module.exports = postModel   //經過commonJS模塊語法導出

models文件夾下新建一個admin.js 定義管理員模型,填入內容json

let mongoose = require('mongoose')

let adminSchema = new mongoose.Schema({
  name: String,   //用戶名
  pass: String    //密碼
})

let adminModel = mongoose.model('admin', adminSchema)

module.exports = adminModel

繼續在models文件夾下新建一個init.js 用於鏈接mongoDB數據庫,填入內容segmentfault

let mongoose = require('mongoose')

mongoose.connect('mongodb://localhost:27017/blog')  // 數據庫的端口號根據需求進行調整,通常直接安裝mongodb並啓動後,端口號默認是27017,若是經過docker安裝,端口號會是其餘的。blog是咱們博客的數據庫的名字,若是沒有名字爲blog的數據庫,會自動添加。

///打印鏈接狀態的日誌,可自行選擇寫與不寫
mongoose.connection.on('connected', (req, res) => {
  console.log('MongoDB connected success')
})
mongoose.connection.on('err', (req, res) => {
  console.log('MongoDB connected fail')
})
mongoose.connection.on('disconnected', (req, res) => {
  console.log('MongoDB connected disconnected')
})

下面就重啓咱們後端項目,若是上次開啓的進程還沒關掉,命令行control + c關閉進程,輸入npm start重啓項目。後端

fk,報錯。。

clipboard.png

不能找到index這個文件,原來是咱們剛剛改了index.jsuser.js文件的名字,由於這兩個文件在app.js中被引用,因此找到app.js,

clipboard.png

clipboard.png

修改成

clipboard.png

clipboard.png

修改完成後,執行npm start
項目是啓動成功了,可是結果沒有出現打印的日誌

clipboard.png

說明咱們的數據庫沒有鏈接,找了好久,原來是由於咱們的init.js文件沒有在app.js中引用,那確定是沒有執行init.js文件,由於前面說了整個項目的主入口文件是app.js,因此咱們在app.js中引用它

clipboard.png

如今重啓項目,看看是否是有了鏈接成功的日誌

clipboard.png

數據庫已鏈接成功,那麼下一步寫接口!

相關文章
相關標籤/搜索