我正在编写一个删除对象的清理函数。这被称为正常。 我的问题是;另一个模型没有正常填充。 (它在其他地方工作)
在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时,它只是{}
答案 0 :(得分:3)
我猜这是由于循环包含(ModelUser
需要ModelGame
需要ModelUser
)。
您可以使用ModelUser
mongoose.model()
的引用
gameScheme.methods.removeGameIdsOnUsers = function () {
const ModelUser = mongoose.model('ModelUser');
...
};