le processus".nextTick(function() { throw err; })' - pas défini n'est pas une fonction (mongodb/mangouste)
J'essaie de me connecter à mon mongodb à l'aide de nodejs et socket.io. Je suis en mesure de se connecter à la base de données parce que j'ai "connexion" accepté " dans ma console mais sur la nodejs côté, dès que je l'ai, en effet, obtenir
Connexion à mongodb://localhost:27017 établi par la mangouste
il échoue immédiatement prochaine avec
processus.nextTick(function() { throw err; }) ^TypeError: undefined est
pas une fonction à showCollections**
Et va ici showCollections:
var showCollections = function(db, callback) {
mongoose.connection.db.collectionNames(function(error, names) {
if (error) {
throw new Error(error);
} else {
console.log("=>Listening mongo collections:");
names.map(function(cname) {
mongoose.connection.db.dropCollection(cname.name);
console.log("--»"+cname.name);
});
}
});
}
Et voici le contenu de mon dossier de base de données:
_tmp (empty folder)
local.0
local.ns
mongod.lock
Je lance le mongodb en tapant mongod --dbpath dossier et il a réussi à 'attend les connexions sur le port 27017'.
Aussi, mon node_modules de paquet.json (mnp)
"dependencies": {
"express": "^4.9.6",
"socket.io": "latest",
"mongodb": "~2.0",
"mongoose": "*"
}
Merci beaucoup pour votre aide...
StackTrace:
> TypeError: undefined is not a function
> at showCollections (/usr/share/nginx/www/index.js:77:25)
> at NativeConnection.callback (/usr/share/nginx/www/index.js:46:3)
> at NativeConnection.g (events.js:199:16)
> at NativeConnection.emit (events.js:104:17)
> at open (/usr/share/nginx/www/node_modules/mongoose/lib/connection.js:485:10)
> at NativeConnection.Connection.onOpen (/usr/share/nginx/www/node_modules/mongoose/lib/connection.js:494:5)
> at /usr/share/nginx/www/node_modules/mongoose/lib/connection.js:453:10
> at /usr/share/nginx/www/node_modules/mongoose/lib/drivers/node-mongodb-native/connection.js:59:5
> at /usr/share/nginx/www/node_modules/mongoose/node_modules/mongodb/lib/db.js:200:5
> at connectHandler (/usr/share/nginx/www/node_modules/mongoose/node_modules/mongodb/lib/server.js:272:7)
EDIT:
Je suis aussi bien avoir ces problèmes lorsque vous essayez d'exécuter la nodejs exemple:
{ [Error: Cannot find module '../build/Release/bson'] code: 'MODULE_NOT_FOUND' }
js-bson: Failed to load c++ bson extension, using pure JS version
J'ai essayé de les fixer comme d'autres questions ici serait de le dire, mais rien n'a fonctionné...
showCollections()
l'erreur provient.comment puis-je imprimer la trace de la pile? est-il censé faire imprimer par défaut?
Oui, il doit avoir été indiqué dans la TypeError que vous avez obtenu.
J'ai mis à jour la question
La ligne est de 75 à
showCollections()
?OriginalL'auteur Fane | 2015-04-04
Vous devez vous connecter pour publier un commentaire.
À partir de l'information fournie, on dirait que vous êtes en utilisant mongodb 2.0 pilote. La db.collectionNames méthode a été abandonnée. Découvrez le "Db Objet" de cette page - https://github.com/mongodb/node-mongodb-native/blob/0642f18fd85037522acf2e7560148a8bc5429a8a/docs/content/tutorials/changes-from-1.0.md#L38
Ils ont remplacé avec listCollections. Vous devriez obtenir le même effet avec:
listCollectionsAsync()
après l'utilisation de bluebird estPromise.promisifyAll(mongoose.connection.db)
+ packageasyncawait
, sans succès (se bloque lors de l'appel delistCollectionsAsync()
pour aucune raison). Cependant, après unconsole.log(mongoose.connection.db)
pour vérifier les méthodes que j'ai trouvé un sans-papierscollectionsAsync()
qui fonctionne parfaitement O_o (mangouste 4.3.7)OriginalL'auteur Gene
Ne devriez pas vous spécifiez le chemin d'accès complet et ont un module d'exportation?
...quelque chose comme:
Si je me trompe, c'est parce que je n'ai pas envie de moongodb
🙂Quel est le résultat si vous exécutez db.getCollectionNames() ?
la même... donc le problème est peut-être obtenir les noms des collections, pour quelque raison que ce soit!
OriginalL'auteur
Pour moi, cette erreur a commencé à apparaître lorsque j'ai eu à forcer l'arrêt de mon pc, car il est devenu insensible. La prochaine fois que j'ai commencé mon express server cette erreur surgit. Je l'ai résolu en exécutant
npm install [email protected] --save
dans le terminal.Peut-être cette erreur apparaît lorsque votre serveur ou la base de données est fermée de force et un peu de code n'est pas enregistrer dans mongod derrière les coulisses.
OriginalL'auteur aakata