2015-09-16 80 views
0

我想要做的是更新一個集合,獎品,然後根據該更新另一個集合,聯盟的結果。貓鼬 - 參考另一個模型使用require

我有以下代碼:

app.post('/auth/prize/:prizeId', function(req, res) { 
    console.log('POST /auth/prize/' + req.params.prizeId); 
    if (req.user) { 
     var mess = 'JOINED'; 
     var query = {...}; 
     var update = {...}; 
     Prize.findOneAndUpdate(query, update, function(err, result) { 
      if (err || result === null) { 
       mess = 'ERROR Incorrect password'; 
       res.send(mess); 
       return; 
      } 
      var League = require('./leagues_api'); 
      var queryL = {...}; 
      var updateL = {...}; 
      League.findOneAndUpdate(queryL, updateL, function(e, r) { 
       if (e || r === null) { 
        mess = 'ERROR Incorrect password'; 
       } 
       res.send(mess); 
      }); 
     }); 
    } else { 
     res.send(401, 'Not Admin!'); 
    } 
}); 

所以,問題是,我看到了一個錯誤:

[TypeError: Object #<Object> has no method 'findOneAndUpdate'] 

我有兩個單獨的文件把一切都易於管理,所以我有這個文件prizes_api.js和另一個文件leages_api.js,它已經在Schema和Model for League中定義了它:

var leagueSchema = new mongoose.Schema({...}); 
var League = mongoose.model('League', leagueSchema); 

我在其他地方使用了相同的風格,但由於某些原因,在此文件中,我看到錯誤失敗。對此有任何建議嗎?

謝謝你,加里。

+0

謝謝你,我知道我失去了一些東西簡單...(你可以作爲一個答案轉貼這樣我就可以接受)。我添加到leagues_api'exports = module.exports = League;'讓它工作 – Gary

回答

2

如果調用require('./leagues_api')沒有返回League型號,那麼您的module.exports未在該文件中正確設置。

看起來應該像下面這樣:

module.exports = League; 
+0

謝謝,忘記添加此部分了。 對於我的設置,我添加: 'exports = module.exports = League;' leagues_api.js的底部(在最後的'}'之前)。 – Gary

+0

很高興幫助。你不需要'exports ='部分。有關詳細信息,請參閱[此處](http://www.hacksparrow.com/node-js-exports-vs-module-exports.html)。 – JohnnyHK

+0

正確的你,謝謝,將更新我的其他代碼來反映這一點。 – Gary