Я просто задаю себе вопрос о том, как правильно определить функцию для схемы Мангуста.
Давайте возьмем мой 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);
}
Но теперь я хочу знать, является ли это правильным способом хранения функций или есть лучший / другой способ?