this.find不是函数,Mongoose Schema设计

时间:2016-08-22 17:19:05

标签: node.js express mongoose

我正在编写一个函数,它将为指定社团的委员会(这是一个社交网站btw)的每个用户创建一个通知,每当我运行它时:

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)

如果有人知道我做错了什么,我会非常感谢帮助:)

编辑: 使用User.find而不是'this'

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)

1 个答案:

答案 0 :(得分:1)

第368行的array(2) { [0]=> string(31) "abc-def-ghi::State.32.1.14.16.5" [1]=> string(1) "A" } array(2) { [0]=> string(31) "abc-def-ghi::State.32.1.14.16.5" [1]=> string(1) "A" } array(2) { [0]=> string(16) "def-ghi::yellow:" [1]=> string(0) "" } 指的是this方法的回调函数的上下文。该回调函数(它是一个对象,在引擎盖下)没有一个名为findById的方法。

相反,请使用findSociety.find(...在数据库中查找其他内容。