サーチ…


モデル - ルート - コントローラ - サービスディレクトリ構造

├───models
│   ├───user.model.js
├───routes
│   ├───user.route.js
├───services
│   ├───user.service.js
├───controllers
│   ├───user.controller.js

モジュラコード構造の場合、ロジックはこれらのディレクトリとファイルに分割する必要があります。

モデル - モデルのスキーマ定義

ルート - APIルートはコントローラにマップされます

コントローラー - コントローラーは、要求パラメーターの検証、照会、正しいコードによる応答の送信の背後にあるすべてのロジックを処理します。

サービス - サービスには、データベースのクエリと戻りオブジェクトまたはエラーのスローが含まれます。

このコーダーは、より多くのコードを書くことになります。しかし、最終的にコードははるかに保守性と分離性が向上します。

モデル - ルート - コントローラ - サービスコード構造

user.model.js

var mongoose = require('mongoose')

const UserSchema  = new mongoose.Schema({
    name: String
})

const User = mongoose.model('User', UserSchema)

module.exports = User;

user.routes.js

var express = require('express');
var router = express.Router();

var UserController = require('../controllers/user.controller')

router.get('/', UserController.getUsers)

module.exports = router;

user.controllers.js

var UserService = require('../services/user.service')    

exports.getUsers = async function (req, res, next) {
    // Validate request parameters, queries using express-validator
    
    var page = req.params.page ? req.params.page : 1;
    var limit = req.params.limit ? req.params.limit : 10;
    try {
        var users = await UserService.getUsers({}, page, limit)
        return res.status(200).json({ status: 200, data: users, message: "Succesfully Users Retrieved" });
    } catch (e) {
        return res.status(400).json({ status: 400, message: e.message });
    }
}

user.services.js

var User = require('../models/user.model')

exports.getUsers = async function (query, page, limit) {

    try {
        var users = await User.find(query)
        return users;
    } catch (e) {
        // Log Errors
        throw Error('Error while Paginating Users')
    }
}


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow