it-swarm.com.de

'process.nextTick (function () {throw err;})' - Undefined ist keine Funktion (Mongodb/Mongoose)

Ich versuche eine Verbindung zu meinem mongodb mittels nodejs und socket.io herzustellen. Ich kann eine Verbindung zur Datenbank herstellen, weil ich in meiner Konsole 'Verbindung akzeptiert' bekomme, aber auf der Node-Seite, sobald ich - tatsächlich - bekomme 

Verbindung zu mongodb: // localhost: 27017 durch Mungo aufgebaut

es fällt sofort weiter mit 

process.nextTick (function () {throw err;}) ^ TypeError: undefined ist keine Funktion bei showCollections **

Und hier geht es zu 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);
      });
    }
  });

}

Und hier ist der Inhalt meines Datenbankordners:

_tmp (empty folder)
local.0
local.ns
mongod.lock

Ich führe mongodb aus, indem ich mongod --dbpath ordner eingibt, und es wartet erfolgreich auf Verbindungen auf Port 27017.

Auch meine node_modules aus package.json (npm)

"dependencies": {
    "express": "^4.9.6",
    "socket.io": "latest",
    "mongodb": "~2.0",
    "mongoose": "*"
  }

Vielen Dank für Ihre Hilfe...

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)

BEARBEITEN:

Ich habe auch diese Probleme, wenn ich versuche, die nodejs-Instanz auszuführen:

{ [Error: Cannot find module '../build/Release/bson'] code: 'MODULE_NOT_FOUND' }
js-bson: Failed to load c++ bson extension, using pure JS version

Ich habe versucht, sie zu reparieren, da andere Fragen dies erklären würden, aber es hat auch nichts geklappt ...

13
Fane

Anhand der bereitgestellten Informationen sieht es so aus, als würden Sie den mongodb 2.0-Treiber verwenden. Die db.collectionNames-Methode wurde gelöscht. Schauen Sie sich den Abschnitt "Db-Objekt" auf dieser Seite an - https://github.com/mongodb/node-mongodb-native/blob/0642f18fd85037522acf2e7560148a8bc5429a8a/docs/content/tutorials/changes-from-1.0.md/

Sie haben es durch listCollections ersetzt. Sie sollten den gleichen Effekt erzielen mit:

mongoose.connection.db.listCollections().toArray(function(err, names) {
    if (err) {
        console.log(err);
    }
    else {
        names.forEach(function(e,i,a) {
            mongoose.connection.db.dropCollection(e.name);
            console.log("--->>", e.name);
        });
    }
});
31
Gene

Sollten Sie nicht den vollständigen Pfad angeben und ein Exportmodul haben?
...so etwas wie:

mongoose.connection.db.collectionNames(function (err, names)
{
        console.log(names); // [{ name: 'dbname.myCollection' }]
        module.exports.Collection = names;
}

Wenn ich falsch liege, liegt das daran, dass ich Moongodb nicht mag :)

0
user4415984

Für mich ist dieser Fehler aufgetaucht, als ich meinen PC erzwingen musste, als er nicht mehr reagierte. Beim nächsten Start meines Express-Servers ist dieser Fehler aufgetreten. Ich habe das Problem gelöst, indem Sie npm install [email protected] --save im Terminal ausgeführt haben . Möglicherweise wird dieser Fehler angezeigt, wenn der Server oder die Datenbank zwangsweise geschlossen wird und Code hinter den Kulissen nicht gespeichert wird.

0
aakata