2020年10月10日 星期六

個人筆記④:MongoDB資料庫、Mongoose套件

軟體需求:MongoDB、Robo 3T

透過NPM安裝的套件:Mongoose

本頁面目錄:

安裝Mongoose以及設定資料庫連線
建立Model以及種子資料


安裝Mongoose以及設定資料庫連線


確認MongoDB已安裝且在服務列表運行中


打開Robo 3T,選擇連線位置(預設為localhost:27017)

建立資料庫


$ nvm i mongoose

使用npm於專案資料夾中安裝Mongoose(MongoDB資料庫套件)


確認mongoose已安裝於專案以及版本號
// app.js, include mongoose and setup connection to mongoDB
const mongoose = require('mongoose', { useNewUrlParser: true, useUnifiedTopology: true })
mongoose.connect('mongodb://localhost/test-server')

在app.js中引入mongoose並連線到mongoDB

路徑內容說明(教案內容)。帳號密碼未設定可省略;Port預設值為27017(預設狀況可省略)

// 取得資料庫連線狀態
const db = mongoose.connection
// 連線異常
db.on('error', () => {
  console.log('mongodb error!')
})
// 連線成功
db.once('open', () => {
  console.log('mongodb connected!')
})

db.on()表示一旦有'error'事件發生就在console當中印出訊息

db.once()僅觸發一次,連線成功時在console當中印出訊息


建立Model以及種子資料


新增資料夾以及model的js檔

const mongoose = require('mongoose')
const Schema = mongoose.Schema
const testSchema = new Schema({
  name: {
    type: String, // 資料型別是字串
    required: true // 這是個必填欄位
  }
})
module.exports = mongoose.model('Test', testSchema)

new Schema()設定新的Schema,根據資料需求設定需要的屬性;module.exports輸出



const mongoose = require('mongoose')
const Test = require('../test') // 載入 todo model
mongoose.connect('mongodb://localhost/test-database', { useNewUrlParser: true, useUnifiedTopology: true })
const db = mongoose.connection
db.on('error', () => {
  console.log('mongodb error!')
})
db.once('open', () => {
  console.log('mongodb connected!')
})

在/model新增資料夾,裡面新增種子js檔

引入mongoose以及載入Schema路徑,並在此js建立資料庫連線

db.once('open', () => {
  console.log('mongodb connected!')
  for (let i = 0; i < 10; i++) {
    Todo.create({ name: 'name-' + i })
  }
  console.log('done')
})

在db.once('open')當中用迴圈使用Schema.create()產生資料


[~/test-server] $ node models/seeds/todoSeeder.js


在Terminal下執行種子檔案,之後就會在資料庫產生種子資料

[~/test-server] $ npm run seed

最後在package.json中新增npm run seed腳本,只要執行$ npm run seed就可以產生種子資料





沒有留言:

張貼留言

個人筆記④:MongoDB資料庫、Mongoose套件

軟體需求: MongoDB 、 Robo 3T 透過NPM安裝的套件: Mongoose 本頁面目錄: 安裝Mongoose以及設定資料庫連線 建立Model以及種子資料