模型中的猫鼬模型未定义

Oli*_*xon 2 mongoose mongodb node.js

我正在为删除对象编写一个清理函数。这被称为正常。我的问题是;另一个模型没有正常填充。(它在其他地方工作)

在 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();
        });
    });
};
Run Code Online (Sandbox Code Playgroud)

我得到以下

TypeError: ModelUser.findOne is not a function
Run Code Online (Sandbox Code Playgroud)

记录 ModelUser 时,它只是 {}

rob*_*lep 5

我猜这是由于循环包含(ModelUser需要ModelGame,需要ModelUser)。

您可以ModelUser在运行时使用mongoose.model()以下方法获取引用:

gameScheme.methods.removeGameIdsOnUsers = function () {
  const ModelUser = mongoose.model('ModelUser');
  ...
};
Run Code Online (Sandbox Code Playgroud)