2016-07-06 51 views
0

我正在爲刪除對象時編寫一個清理函數。這被稱爲正常。 我的問題是;另一個模型沒有被正常填充。 (它的工作原理其他地方)模型中的貓鼬模型未定義

在ModelGame.js

var mongoose = require('mongoose'); 
var ModelUser = require(process.env.root + '/models/ModelUser'); 

// Some schema code 
// Some schema code 
// Some schema code 

// Remove ids to users. 
gameScheme.post('remove', function(game) { 
    game.removeGameIdsOnUsers().then(function(){ 
     next(); 
    }) 
    .catch(function(err){ 
     next(err); 
    }) 
    ; 
}); 
gameScheme.methods.removeGameIdsOnUsers = function() { 
    var self = this; 
    return this.users.reduce(function(promise, user) { 
     return ModelUser.findOne({id: user}).exec() 
      .then(function(foundUser) { 
       return foundUser.removeGameId(self) 
        .catch(function(err) { 
         console.log('Error removing game id to user.' + user); 
         console.log(err); 
         Promise.reject(err); 
        }), 
      Promise.resolve(); 
     }); 
    }); 
}; 

我得到以下

TypeError: ModelUser.findOne is not a function 

當登錄該ModelUser它只是{}

回答

1

我猜,這是由於通知包含(ModelUser要求,要求ModelUser)。

可以使用mongoose.model()在運行時獲取一個參考ModelUser

gameScheme.methods.removeGameIdsOnUsers = function() { 
    const ModelUser = mongoose.model('ModelUser'); 
    ... 
}; 
+0

感謝;它變成了這個。 –