Модель представляет собой программное представление данных, хранящихся в базе данных.Скажем, у меня есть таблица employees
со следующей схемой:
name: string
age: number
company: company_foreign_key
И еще одна таблица с именем companies
name: string
address: string
. Поэтому у меня есть две модели: Company
и Employee
.
Цель модели - загрузить данные базы данных и предоставить удобный программный интерфейс для доступа и обработки этих данных
Итак, мой контроллер может выглядеть так:
var db = require('mongo');
var employeeName = "bob";
db.connect(function(err, connection){
const Employee = require('./models/Employee.js'); // get model class
let employeeModel = new Employee(connection); // instantiate object of model class
employee.getByName(employeeName, function(err, result){ // convenience method getByName
employee.getEmployeeCompany(result, function(err, companyResult){ // convenience method getEmployeeCompany
if(companyResultl) { // Controller now uses the results from model and passes those results to a view
res.render('index.ejs')
company: companyResult
});
})
})
}
})
По сути, модель предоставляет удобный интерфейс для необработанных данных в базе данных.Модель выполняет запросы внизу и предоставляет удобные методы в качестве открытого интерфейса для доступа контроллера.Например, модель сотрудника, учитывая объект сотрудника, может найти компанию сотрудника, выполнив этот запрос.
Вышеприведенный пример является лишь примером, и, если уделить больше внимания, можно придумать лучший интерфейс.Фактически, Mongoose предоставляет отличный пример того, как настроить интерфейсы моделей.Если вы посмотрите, как работает Mongoose, вы можете использовать те же принципы и применить их к реализации своей пользовательской модели.