模型中的Mongoose模型未定义

时间:2016-07-06 15:26:14

标签: node.js mongodb mongoose

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

在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 个答案:

答案 0 :(得分:3)

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

您可以使用ModelUser

在运行时获得对mongoose.model()的引用
gameScheme.methods.removeGameIdsOnUsers = function () {
  const ModelUser = mongoose.model('ModelUser');
  ...
};