Поэтому я искал много сообщений в стеке и в других местах, но не смог найти ответ на этот конкретный вопрос. Было бы неловко, если окажется, что это уже существует где-то в стеке потока.

Я начал писать свой код ООП способом, и мне это нравится до сих пор. Однако, хотя мой следующий пример работает так, как задумано, я не уверен, что это хороший / правильный способ сделать это.

function User(username, password, email) { this.username = username || ""; this.password = password || ""; this.email = email || ""; this.get = async() ={amp}gt; { /* query database and assign values to object */ return this; } this.getAll = async() ={amp}gt; { let allUsers = []; let users = await db.select().from("users"); for(let user in users) { let userSet = new User(); for(let field in userSet) userSet[field] = users[user][field]; allUsers.push(userSet); } return allUsers; }; this.register = async() ={amp}gt; { /* */ }; this._validateData = async() ={amp}gt; { /* */ }; this._hashPassword = async() ={amp}gt; { /* */ }; this._generateJwt = async() ={amp}gt; { /* */ } } module.exports = User; 

Это всего лишь фрагмент моей пользовательской модели, которую я использую в своем проекте ExpressJS.

По сути, у меня есть две конечные точки API, одна для возвращения одного пользователя и одна для перечисления всех пользователей. Когда запрос достигает моей однопользовательской конечной точки, я просто получаю имя пользователя из req.params , создаю новый экземпляр и вызываю мой метод .get () . .get () запрашивает базу данных, присваивает значения полям объекта и возвращает весь объект. Теперь я верю, что все в порядке.

Однако у меня есть проблемы с моим методом .getAll () . Он должен возвращать несколько пользователей, поэтому у меня есть один блок цикла for, который перебирает результаты базы данных и создает новые экземпляры в самом методе, назначает соответствующие данные каждому отдельному экземпляру, помещает пользовательские экземпляры в массив и в конце возвращает массив пользователей. Но я не уверен, что это лучшая практика. Я делаю это правильно, и если нет, то как мне решить это? Можно ли использовать метод объекта, который создает массив экземпляров объекта?