2017-10-07 4 views
2

In meiner Hauptdatei server.js ich folgende Funktion haben:Node.js | Typeerror: [...] ist keine Funktion

server.js

const mongoose = require('mongoose'); 
const SmallRounds = require('./models/smallrounds.js'); 

function initRound(){ 
    logger.info('Initializing round...'); 
    SmallRounds.getLatestRound((err, data) => { 
     [...] 
    }); 
} 

die Funktion getLatestRound() exportiert wird in meinem Mungo Modell smallrounds.js

smallrounds.js

const mongoose = require('mongoose'); 
const config = require('../config.js'); 

const SmallRoundsSchema = mongoose.Schema({ 
    [...] 
}); 

const SmallRounds = module.exports = mongoose.model('SmallRounds', SmallRoundsSchema); 

module.exports.getLatestRound = function(callback){ 
    SmallRounds.findOne().sort({ created_at: -1 }).exec((err, data) => { 
     if(err) { 
      callback(new Error('Error querying SmallRounds')); 
      return; 
     } 
     callback(null, data) 
    }); 
} 
Aber

, wenn ich rufe initRound() Ich folgende Fehlermeldung erhalten:

TypeError: SmallRounds.getLatestRound is not a function

at initRound (E:\Projects\CSGOOrb\server.js:393:14)
at Server.server.listen (E:\Projects\CSGOOrb\server.js:372:2)
at Object.onceWrapper (events.js:314:30)
at emitNone (events.js:110:20)
at Server.emit (events.js:207:7)
at emitListeningNT (net.js:1346:10)
at _combinedTickCallback (internal/process/next_tick.js:135:11)
at process._tickCallback (internal/process/next_tick.js:180:9)
at Function.Module.runMain (module.js:607:11)
at startup (bootstrap_node.js:158:16)
at bootstrap_node.js:575:3

Warum ist das passiert? Ich glaube nicht, dass ich zirkuläre Abhängigkeiten habe und nichts falsch geschrieben habe. Danke :)

+0

Vielleicht ist das Objekt in 'mongoose.model' eingefroren oder etwas? Stellen Sie sicher, dass die Datei, die Sie benötigen, genau so ist wie in diesem Beitrag. – MinusFour

+0

Es ist, ich kopiere den Code eingefügt –

Antwort

2

Das ist nicht, wie Sie Methoden zu Mongoose Modellen/Schemas hinzufügen.

Versuchen Sie folgendes: http://mongoosejs.com/docs/guide.html, im Abschnitt "Statiken":

const mongoose = require('mongoose'); 
const config = require('../config.js'); 

const SmallRoundsSchema = mongoose.Schema({ 
    [...] 
}); 

SmallRoundsSchema.statics.getLatestRound = function(callback){ 
    this.findOne().sort({ created_at: -1 }).exec((err, data) => { 
     if(err) { 
      callback(new Error('Error querying SmallRounds')); 
      return; 
     } 
     callback(null, data) 
    }); 
} 

const SmallRounds = module.exports = mongoose.model('SmallRounds', SmallRoundsSchema); 

Sie die Dokumentation hier lesen kann. Es gibt andere, bessere Möglichkeiten, um das gleiche Ergebnis zu erzielen, aber dies wird Ihnen helfen.

+0

Riesige Dankeschön. Ich weiß wirklich nicht, was mit meinem Code passiert ist, ich benutze module.exports seit Monaten für diese Funktionen und hatte nie Probleme, außer für heute, wo es plötzlich aufgehört hat zu arbeiten. –

Verwandte Themen