В настоящее время я пишу функцию, которая будет создавать уведомление для каждого Пользователя, который находится в комитете определенного Общества (это сайт социальной сети, кстати, и всякий раз, когда я запускаю это:this.find не является функцией, дизайн схемы Mongoose
User.statics.newSocietyNotification = function(req, socID, typeID, url, next){
var tmpUsers = []
Society.findById(socID, function(err, doc){
console.log(doc)
doc.committee.forEach(function(comMember, i){
tmpUsers.push(comMember._uid)
})
this.find({'_id' : { $in : tmpUsers } }, function(err, docs){
if(err){
console.log(err)
}
if(docs.length == 0 || docs == null){
next(false)
}
next(docs)
console.log(docs)
})
})
}
Он разбивает сервер с этим сообщением:
TypeError: this.find is not a function
at /home/ubuntu/workspace/models/user.js:368:10
at Query.<anonymous> (/home/ubuntu/workspace/node_modules/mongoose/lib/model.js:3324:16)
at /home/ubuntu/workspace/node_modules/mongoose/node_modules/kareem/index.js:259:21
at /home/ubuntu/workspace/node_modules/mongoose/node_modules/kareem/index.js:127:16
at nextTickCallbackWith0Args (node.js:420:9)
at process._tickCallback (node.js:349:13)
Если кто-нибудь знает, что я делаю неправильно, я бы очень признателен за помощь :)
EDIT:Использование User.find вместо «это»
TypeError: User.find is not a function
at /home/ubuntu/workspace/models/user.js:368:10
at Query.<anonymous> (/home/ubuntu/workspace/node_modules/mongoose/lib/model.js:3324:16)
at /home/ubuntu/workspace/node_modules/mongoose/node_modules/kareem/index.js:259:21
at /home/ubuntu/workspace/node_modules/mongoose/node_modules/kareem/index.js:127:16
at nextTickCallbackWith0Args (node.js:420:9)
at process._tickCallback (node.js:349:13)
Вы пытаетесь найти «Пользователь» или «Общество»? Просто используйте соответствующую модель снова, вместо того, чтобы использовать 'this'. Таким образом, вам не нужно надеяться/предположить, что «это» связано с тем, что вы ожидаете. – dvlsg
try 'Society.find' –
См. Править, по-прежнему получают ту же ошибку по какой-то причине – user3265690