Я пытаюсь использовать модель базы данных, которую создаю в других функциях-прототипах, но она всегда возвращает ошибку «Ошибка при инициализации модели», поэтому this.model пуст.Что-то не так с моим объектом в целом, потому что все решения, которые я нашел по этой теме, не имели проблем с 'this' внутри функций прототипа.
Версия моего узла: 11.9.0
function CRUD (collection /* String */, schema /* mongoose.Schema */) {
this.model = db.model(collection, schema)
console.log('Model initialized ')
}
CRUD.prototype.create = function (req, res, next) {
if(!this.model) throw new Error('No Model initialized')
this.model.create(req.body, (err, data) => {
if (err){
res.send('Can`t create Object')
} else{
console.log(data, ' created')
next()
}
})
}
CRUD.prototype.read = function (req, res, next) {
if(!this.model) throw new Error('No Model initialized')
if(req.query){ // for GET requests
var filter = req.query
}else if(req.body){ // for other requests
var filter = req.body
}else{
var filter = {} // no filter
}
this.model.find(filter, req.body, (err, data) => {
if (err){
res.send('Can`t find Object')
} else{
req.body = data
next()
}
})
}
Код работал уже, когда я использовал вместо 'this.model' 'CRUD.prototype.model', но мне пришлось изменить его, потому что модель была своего рода статическим параметром в прототипе, и мне нужны другие модели длякаждый объект CRUD.