Suche…


Verzeichnisstruktur für Modellrouten, Controller, Dienste

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

Für eine modulare Codestruktur sollte die Logik in diese Verzeichnisse und Dateien unterteilt werden.

Modelle - Die Schemadefinition des Modells

Routen - Die API leitet Karten an die Controller weiter

Controller - Die Controller handhaben die gesamte Logik hinter der Validierung von Anforderungsparametern, der Abfrage und dem Senden von Antworten mit korrekten Codes.

Dienste - Die Dienste enthalten die Datenbankabfragen und das Zurückgeben von Objekten oder das Auslösen von Fehlern

Dieser Codierer schreibt am Ende mehr Codes. Aber am Ende werden die Codes viel einfacher zu pflegen und zu trennen sein.

Code-Struktur für Modellrouten-Controller-Dienste

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
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow