2016-08-22 3 views
0

В настоящее время я пишу функцию, которая будет создавать уведомление для каждого Пользователя, который находится в комитете определенного Общества (это сайт социальной сети, кстати, и всякий раз, когда я запускаю это: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) 
+0

Вы пытаетесь найти «Пользователь» или «Общество»? Просто используйте соответствующую модель снова, вместо того, чтобы использовать 'this'. Таким образом, вам не нужно надеяться/предположить, что «это» связано с тем, что вы ожидаете. – dvlsg

+0

try 'Society.find' –

+0

См. Править, по-прежнему получают ту же ошибку по какой-то причине – user3265690

ответ

1

Ваш this на линии 368 имеет в виду контекст функции обратного вызова метода findById. Эта функция обратного вызова (которая является объектом под капотом) не имеет метода, называемого find.

Вместо этого используйте Society.find(... или User.find(..., чтобы найти что-то еще в базе данных.

Смежные вопросы