En essayant d'obtenir une liste des collections de la mangouste
Je suis en train de retourner une liste de dbs des collections à l'aide de la mangouste. Je suis en suivant les directives énoncées ici, mais http://grokbase.com/t/gg/mongoose-orm/122xxxr7qy/mongoose-get-a-list-of-all-collections. Voici donc mon code
var mongoose = require('mongoose');
//if (mongoose.connection.readyState == 0){//checks if already connected to the database
console.log("creating connection to the database");
var Config = require('../configs/config');
var config = new Config();
config = config.getConfig().db.dev;
if (mongoose.connection.readyState = 0 ) {
mongoose.connect("mongodb://austin:[email protected]:10023/test1");
console.log('mongoose readyState is ' + mongoose.connection.readyState);
}
var collection;
mongoose.connection.on('open', function (ref) {
console.log('Connected to mongo server.');
});
//trying to get collection names
mongoose.connection.db.collectionNames(function (err, names) {
console.log(names); //[{ name: 'dbname.myCollection' }]
module.exports.Collection = names;
});
le seul problème est que les noms des retours comme indéfini. Alors, est-il même possible de retourner une liste de collections en utilisant simplement la vanille mangouste?
Pas directement familier avec la Mangouste, mais mes connaissances générales de Mongo et le nœud qui m'amène à croire que votre collectionNames appel est de retour indéfini parce que vous n'êtes pas réellement connecté encore. Si c'est de l'asynchrone, cette méthode peut de feu avant de les "ouvrir" les retours. Essayez de placer ce bloc à l'intérieur de la fonction open.
OriginalL'auteur Austin Davis | 2013-11-13
Vous devez vous connecter pour publier un commentaire.
Essayez de lancer votre collecte de noms de fonction après la connexion.
-1 parce qu'il ne fonctionne plus, merci de mettre à jour la réponse, alors je vais supprimer le downvote. Pour les autres, voir Squivo de réponse.
- 1 parce que ce n'est pas de réponse valable à compter d'aujourd'hui. Utilisation
mongoose.connection.db.listCollections().toArray((error, collections) => { //... })
OriginalL'auteur Charlie Key
Viens de tomber sur cette réponse et s'il a travaillé à l'heure actuelle, il semble
collectionNames
a été retiré de la disposition des noms de fonction en faveur delistCollections
Cette autre débordement de pile post est un exemple de travail: https://stackoverflow.com/a/29461274/4127352
Voici le lien vers l'original docs: http://mongodb.github.io/node-mongodb-native/2.0/meta/changes-from-1.0/
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-papierscollections()
fonction (promisified commecollectionsAsync()
) qui fonctionne parfaitement O_o (mangouste 4.3.7)Par exemple dangereux, j'ai copié le code rapide et n'a pas remarqué qu'il tombe des collections dans la base de données. Donc merci de modifier à contenir du code qui répertorie les collections Donc attention!
OriginalL'auteur Squivo
Voici comment j'ai réussi à obtenir tous les noms sur la base de données connecté.
Cette solution fonctionne bien sur mangouste 4.4.19.
mongoose.model
fonction. Il répertorie les collections, même sur une base de données vide, en fait de même avant de le brancher à un.OriginalL'auteur Roger
Si vous ne travaillez qu'avec des Mangoustes, des Modèles, c'est tout ce dont vous avez besoin:
OriginalL'auteur zurfyx