21

Mongoose を使用して dbs コレクションのリストを返そうとしています。ここに記載されている指示に従っていますが、http://grokbase.com/t/gg/mongoose-orm/122xxxr7qy/mongoose-get-a-list-of-all-collections . だからここに私のコードがあります

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:password1@paulo.mongohq.com: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;
    });

唯一の問題は、名前が未定義として返されることです。では、バニラマングースだけを使用してコレクションのリストを返すことさえ可能ですか?

4

5 に答える 5

5

これが、接続されたデータベースのすべての名前を取得する方法です。

var mongoose = require('mongoose');
var collections = mongoose.connections[0].collections;
var names = [];

Object.keys(collections).forEach(function(k) {
    names.push(k);
});

console.log(names);

このソリューションは、mongoose 4.4.19でうまく機能します。

于 2016-06-24T01:08:49.703 に答える
0

Mongoose モデルのみを使用している場合は、これで十分です。

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({});
});
于 2016-12-19T09:33:55.740 に答える