Я унаследовал кодовую базу с несколькими явными методами для каждой модели, и я начал замечать, что большинство, если не все эти методы, могут быть сокращены до четырех универсальных Create, Read, Update и Delete (CRUD) методы, просто передавая в них соответствующий JSON из маршрутов или веб-запросов, вместо того, чтобы явно определять такие вещи, как запросы монго внутри модели.
У меня вопрос: я наткнулся на лучшие практики или это упрощение приводит к некоторой дыре в безопасности или проблемам с аутентификацией, которых я просто пока не вижу?
Например, все эти методы существуют в models / user.js:
module.exports.getUserByID = function (id, callback) {
const query = {'_id': id };
User.findOne(query, callback);
};
module.exports.getUserByUsername = function (username, callback) {
const query = {'username': username};
User.findOne(query, callback);
};
module.exports.getUserByFullname = function (fullname, callback) {
const query = {'name.fullname': fullname};
User.findOne(query, callback);
};
... и я хочу объединить их в один метод ...
models/user.js:
module.exports.getUser = function (query, callback) {
User.findOne(query, callback);
};
Тогда мне понадобятся три разных POST-маршрута (/users/byId, /users/byName, and users/byFullName
) или, возможно, один POST-маршрут, users/getUser
, для которого могут быть переданы конкретные запросы из cURL ({'_id':"'$userID'"}, {'username':"'$userName'"},{'name.fullname':"'$userFullName'"}
)?
Я надеюсь свести каждую модель / *. Js к схеме и четырем методам, оставляя либо маршруты, либо веб-запросы для предоставления всего JSON, необходимого, например, для обновления записи. Я просто не уверен, какой из трех вариантов (несколько методов модели (текущая реализация), несколько маршрутов или несколько веб-запросов) является наилучшей практикой.
О каких возможных будущих проблемах я не думаю? Упрощение методов модели на самом деле так, как это должно было быть написано с самого начала?