2018-08,本文適用於對egg有興趣想要了解的同學
專案主要檔案目錄結構
|—— app
|—— controller
|—— cook.js
|—— model
|—— cook.js
|—— router.js
|—— config
|—— config.default.js
|—— plugin.js
|—— package.json
|—— README.md
安裝
- npm i egg-init -g
- egg-init egg-example –type=simple
- cd egg-example
- npm i
啟動專案
- npm run dev
專案
本文主要是以搭建一個連線mongoDB的後端,以提供api介面
連線資料庫
1.引入資料庫外掛,在plugin.js檔案中新增如下程式碼
exports.mongoose = {
enable: true,
package: `egg-mongoose`,
};
2.在config.default.js中新增如下配置
config.mongoose = {
client: {
url: `mongodb://127.0.0.1:27017/database-name`,
},
}
編寫model
在model檔案下新增,cook.js 檔案
module.exports = app => {
const mongoose = app.mongoose;
const Schema = mongoose.Schema;
const CookeSchema = new Schema({
_id: { type: Schema.Types.ObjectId },
name: { type: String },
img: { type: String },
step: { type: String }
}, {
versionKey: false
});
return mongoose.model(`cooks`, CookeSchema);
}
注意如果使用mongoDB中的_id時type的型別,以及如何去掉__v 版本鎖欄位。
編寫controller
在controller資料夾下新增,cook.js檔案
const Controller = require(`egg`).Controller;
class HomeController extends Controller {
async list() {
this.ctx.response.body = {
result: await this.ctx.model.Cook.find({}, {`_id`: 0})
};
}
async listOne() {
const { id } = this.ctx.params
this.ctx.body = {
result: await this.ctx.model.Cook.find({ `_id`: id }, {`_id`: 0})
};
}
}
module.exports = HomeController;
這裡用於獲取資料庫中的資料
新增路由
module.exports = app => {
const { router, controller } = app;
router.get(`/cook/`, controller.cook.list);
router.get(`/cook/:id`, controller.cook.listOne);
};
確保資料庫能連線成功後,便可以啟動專案。
本文只是輔助介紹快速搭建一個基本的egg專案,具體內容請參考:https://eggjs.org/
若有疑問或錯誤,請留言,謝謝!Github blog issues