2016-07-06 7 views
0

Ich schreibe eine Aufräumfunktion für wenn ein Objekt gelöscht wird. Dies wird als normal bezeichnet. Mein Problem ist; Das andere Modell wird nicht wie üblich bestückt. (Es funktioniert sonst wo)Mongoose Model in Model ist undefined

Innerhalb 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(); 
     }); 
    }); 
}; 

bekomme ich folgende

TypeError: ModelUser.findOne is not a function 

Wenn die ModelUser Anmeldung ist es nur {}

Antwort

1

Ich vermute, dass dies aufgrund der kreisförmigen enthält (ModelUser erfordert , die ModelUser erfordert).

Sie können einen Verweis auf ModelUser zur Laufzeit erhalten mongoose.model() mit:

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

Dank; Es war genau das geworden. –