Не изменяя свою схему, сначала выполните рефакторинг своего кода следующим образом:
function handle(find_func, base_role, req, res, next) {
find_func( // your original code inside User.find, change "superadmin" : "user" to "superadmin" : base_role
...);
}
для обычного входа пользователя, позвоните
handle(User.find, "user", req, res, next);
для входа администратора, позвоните
handle(Admin.find, "admin", req, res, next);
Теперь вам нужно различить, является ли логин обычным пользователем или администратором.Не объединяя вашу администраторскую и пользовательскую схемы в одну более крупную схему с одним новым полем «роль», указывающим, является ли он обычным пользователем или администратором, вы можете запросить, находится ли имя пользователя в коллекции пользователей, и, если нет, запросить, находится ли оно в коллекции администраторов, затем вызватьсоответствующий handle
.