提醒:由於看到這系列鐵人訂閱人數漸漸變多,標記一下這些內容是在「非常萌新時期」所寫,更多技術內容請參考我的 Github,歡迎跟我一起討論 ^ ^
今天的內容介紹如何使用 Database(使用 Mongoose/MongoDb)
Mongoose
對應 Database:MongoDb
,因此接下來將介紹使用 Mongoose 建立 model,使用其對接並在 MongoDb 上建立資料。教材是先介紹 Mongoose 基本用法,但對新手我而言,還不熟悉這之間結構上的關聯,並非易懂,因此後來我先跳到後半段,先將其結構建出來,再回頭看比較清楚他們之間想達成的動作。
mongodb+srv://使用者名稱:密碼@cluster0-mbdj7.mongodb.net/local_library?retryWrites=true
npm install mongoose
const app = express()
底下加入新的code)
const mongoose = require('mongoose')
const mongoDB = '你 MongoDB 的 URL'
mongoose.connect(mongoDB, { useNewUrlParser: true })
const db = mongoose.connection
db.on('error', console.error.bind(console, 'MongoDB connection error:'))
const mongoose = require('mongoose')
const Schema = mongoose.Schema
// 先新增 Author 的 Schema ,其中可設定姓名、生卒年等,可對其 value 的規格做限制。
const AuthorSchema = new Schema(
{first_name: { type: String, required: true, max: 100 },
family_name: { type: String, required: true, max: 100 },
date_of_birth: { type: Date },
date_of_death: { type: Date }})
// 接著可設定一些 virtual 的屬性,方便使用,但這些屬性不會存進 database。
AuthorSchema.virtual('name').get(function () {return this.family_name + ', ' + this.first_name})
AuthorSchema.virtual('lifespan').get(function () {return (this.date_of_death.getYear() - this.date_of_birth.getYear()).toString()})
// 並用 _id 來產生其 URL。
AuthorSchema.virtual('url').get(function () {return '/catalog/author/' + this._id})
// 最後再輸出 module 以供使用。
module.exports = mongoose.model('Author', AuthorSchema)
npm install async
node populatedb '你 MongoDB 的 URL'
,以在 MongoDB 創建 populatedb.js 所描寫的資料。