我只是问自己一个问题,为猫鼬模式定义函数的正确方法是什么。
以我的UserSchema
为例。在我的许多路线中,我都希望获取用户的信息,以便进行包含getUserByUsername
的查询findOne(username: username)
。
正如我所写,我正在许多途径中做到这一点。因此,为了缩短我的代码,我想只使用一次此功能,而不要一次又一次地在每个路由中使用此功能。我想要一个中央位置,我可以随时从该位置调用此函数。
因此,我开始搜索并发现,直接在我的UserSchema定义user.js
内添加函数是有效的。
整个文件如下:
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);
}
但是我现在想知道,这是存储函数的正确方法还是有更好的/其他方法?
答案 0 :(得分:0)
您应该创建一个控制器文件夹,在其中定义函数,并且在发出任何请求时将在route类中调用这些函数。您可以在下面的文章中有详细的想法。
https://developer.mozilla.org/en-US/docs/Learn/Server-side/Express_Nodejs/routes