J'essaie de renvoyer une liste de collections DBS en utilisant de la mangouste. Je suis les instructions énoncées ici mais http://grokbase.com/t/gg/mongoose-orm/122xxxr7qy/mongoose-get-a-list-of-all-collections . Alors voici 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 retournent comme indéfinis. Ainsi, est-il même possible de renvoyer une liste de collections en utilisant uniquement la mangouste à la vanille?
Essayez d’exécuter votre fonction de noms de collection après la connexion.
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;
});
})
Je viens tout juste de trouver cette réponse et, même si cela a peut-être fonctionné au moment où il apparaît que collectionNames
a été supprimé des noms de fonctions disponibles au profit de listCollections
Cet autre poste de débordement de pile a un exemple de travail: https://stackoverflow.com/a/29461274/4127352
Voici le lien vers les documents originaux: http://mongodb.github.io/node-mongodb-native/2.0/meta/changes-from-1.0/
Voici comment j'ai réussi à obtenir tous les noms sur la base connectée.
var mongoose = require('mongoose');
var collections = mongoose.connections[0].collections;
var names = [];
Object.keys(collections).forEach(function(k) {
names.Push(k);
});
console.log(names);
Cette solution fonctionne bien sur mangouste 4.4.19 .
Si vous travaillez uniquement avec des modèles Mongoose, c’est tout ce dont vous avez besoin:
const connection = mongoose.connection;
Object.keys(connection.models).forEach((collection) => {
// You can get the string name.
console.info(collection);
// Or you can do something else with the model.
connection.models[collection].remove({});
});