boilerplate express entity based
Security Updates
初始 API 架構。包含一組基本且必須具備的模組、服務和配置。
使用 Express 中間件來分割功能並具有邏輯上獨立的部分。每個路由器/端點可能有一系列中間件來驗證資料、從資料來源載入資料、映射資料、檢查權限並執行主要業務邏輯。
每個中間件函數在整個鏈集中都應該具有相同的名稱。
範例:如果使用者建立過程的新請求傳遞多個中間件函數,則所有中間件函數應具有相同的名稱( createOne(req, res, next)
)
*例外:不相關的「幫助」中間件
例子:
appRoute.get('/:userId',
authMiddleware.isAuthenticated,
acl.getOne,
validator.getOne,
loader.getOne,
controller.getOne,
);
./app/middlewares/
連結項目以執行自己的特定功能。
檢查目前請求是否可以到達業務邏輯。該層可以檢查登入使用者是否有權執行該請求。
例子:
async getOne(req, res, next) {
if (mainAcl.isAdmin(req.user)) {
return next();
}
const userIdRequested = req.params.userId;
const userIdCurrent = req.user._id.toString();
if (userIdRequested === userIdCurrent) {
return next();
}
return next(new Forbidden());
},
映射傳出/傳入資料以供另一個函數進一步處理。
例子:
updateOne(req, res, next) {
delete req.body.password;
delete req.body.confirm_password;
return next();
},
根據安裝的規則驗證傳入數據,以防止處理無效資料。
例子:
deleteOne(req, res, next) {
req.assert('userId', 'Valid user id should be provided').notEmpty().isMongoId();
mainValidator.handleValidationResult(mainValidator.validateErrorsSync(req), res, next);
},
從可用資料來源載入/取得業務邏輯實體/物件所需的資料。系統可以從資料庫檢索使用者或相關實體或處理資料。
將載入的實體儲存並傳遞到req
(請求)物件內的特殊物件中。實體載入器服務應該用於 sed 所有實體並在請求物件內傳遞。
例子:
async getOne(req, res, next) {
try {
const userFound = await UserService.findOne({ query: { _id: req.params.userId }, options: { lean: true } });
if (!mainHelper.isObjectValid(userFound)) {
throw new NotFound('user not found');
}
MainLoader.setEntities(req, { user: userFound });
return next();
} catch (err) {
return next(err);
}
},
./app/services/
服務執行要在應用程式內部呼叫的單一焦點功能,以處理業務邏輯。
./commands
請造訪 https://nodejs.org 以了解安裝詳細資訊。
節點包管理器,應該與節點捆綁在一起。
安裝 MongoDB https://docs.mongodb.com/manual/installation/
$ git clone <package url> .
$ npm install
config/env/env.local
檔案並從config/env/env.local_example
複製數據config/env/.env.test
檔案並從config/env/.env.test_example
複製數據$ npm run start:[environment]
範例: $ npm run start:local