Где я могу определить функцию для схемы Мангуста - PullRequest
0 голосов
/ 13 ноября 2018

Я просто задаю себе вопрос о том, как правильно определить функцию для схемы Мангуста.

Давайте возьмем мой UserSchema например. Во многих моих маршрутах я хотел бы получить информацию о пользователе, чтобы выполнить запрос getUserByUsername, который включает findOne(username: username).

Как я уже писал, я делаю это во многих направлениях. Таким образом, чтобы сократить мой код, я хотел бы иметь эту функцию только один раз, а не внутри каждого маршрута снова и снова. Я хочу центральное место, откуда я могу вызывать эту функцию, когда захочу.

Итак, я начал поиск и обнаружил, что допустимо добавлять функции непосредственно в мой user.js, который является моим определением UserSchema.

Весь файл выглядит так:

user.js

const mongoose = require('mongoose');
const bcrypt = require('bcryptjs');
const config = require('../config/database');

const Partner = require('./partner');
const UserRights = require('./userRights');

//User Schema - Datenbankaufbau
const UserSchema = mongoose.Schema({
    name: {
        type: String
    },
    email: {
        type: String,
        required: true
    },
    username: {
        type: String,
        required: true
    },
    password: {
        type: String,
        required: true
    },
    partnerId: {
        type: mongoose.Schema.Types.ObjectId, 
        ref: 'Partner' 
    },
    userRights: {
        type: mongoose.Schema.Types.ObjectId, 
        ref: 'UserRights' 
    },
    isLoggedIn: {
        type: Boolean,
        default: false
    },
    hasToRelog: {
        type: Boolean,
        default: false
    }
});



const User = module.exports = mongoose.model('User', UserSchema);


// Find User by ID
module.exports.getUserById = function(id, callback) {
    User.findById(id, callback);
}

// Find User by Username
module.exports.getUserByUsername = function(username, callback) {
    const query = {username: username};
    User.findOne(query, callback);
}

Но теперь я хочу знать, является ли это правильным способом хранения функций или есть лучший / другой способ?

1 Ответ

0 голосов
/ 13 ноября 2018

Вы должны создать папку контроллера, в которой вы будете определять функции, и эти функции будут вызываться в классе маршрутизации при выполнении любого запроса. Подробную идею вы можете получить в следующей статье.

https://developer.mozilla.org/en-US/docs/Learn/Server-side/Express_Nodejs/routes
...