6

mongoose プラグインを使用して mongodb データを移行するために使用する移行モジュールを入手した人はいますか?

現在、「移行」モジュールを使用していますが、アップ/ダウンごとに接続を作成/破棄する必要があるという事実を除いて、うまく機能します。

IE

// Setup mongoose
var mongoose = require('mongoose')
  , Role = require('../models/role')
  , User = require('../models/user');

exports.up = function(next) {
  // get a brand new connection for this patch.
  mongoose.connect('mongodb://localhost/sagedb');

  var adminUser = {
    username: 'admin',
    password: 'admin'
  };

  User.createUser(adminUser, function(err, user) {
    if (err)  {
       mongoose.disconnect();  // Make sure to close connection
       return next(err);
    }

    mongoose.disconnect(next); // Make sure to close connection
  });
};

exports.down = function(next) {
  mongoose.connect('mongodb://localhost/sagedb'); // new connection for down

  User.getUserByUsername('admin', function(err, user) {
    if (err) {
      mongoose.disconnect(function() { // make sure to close connection
        return next(err);
      });
    }

    if (!user) {
      mongoose.disconnect(); // make sure to close connection
      return next();
    }

    User.deleteUser(user, function(err, user) {
      console.log('deleted user');
      mongoose.disconnect(next); // make sure to close connection
    });
  });
};

おそらくこれを行うためのはるかに良い方法です。唯一のオプションは、接続を一度開始し、すべてのパッチが完了したときに接続を閉じる独自のモジュールを作成することであるかどうか疑問に思っています。

データベース コレクションの移行を追跡する mongoose-migrate を見てきました。私見のマングースに固有のものではありませんが、.migrateファイルを引き続き使用したいのですが、接続を1回開くだけで済みます。

4

3 に答える 3

0

また、箱から出してすぐに mongoose 接続を提供する、私のmigrate-mongoose移行フレームワークを試すこともできます。

upまたは関数では、downこのようにモデルにアクセスできます

this('user').findOne({ name: 'Sergey' });

また、移行をファイル システムではなくデータベースに保持します。

于 2016-04-06T01:45:09.980 に答える