1

私のアプリケーションでは、非常に大きなコレクション ブランチを別のコレクションに移動する必要があります。現在、私はそのようなものを使用しています:

srcRef
 .startAt(start)
 .endAt(end)
 .once('value', function(snap) {
   destRef.set(snap.exportVal());
 });

明らかに、それは非常に高価なので、私の質問は次のとおりです。なぜ Firebase はそのための単純な API を提供しないのですか? お気に入り:

srcRef.moveTo(destRef);
4

1 に答える 1

1

Firebase CLI を使用できます。

Firebase CLI は npm でインストールされます

sudo npm install -g firebase-tools

次に、コマンドを実行してデータを取得および設定できます。

firebase data:get / -f "<my-firebase-app>"

一般的な操作を行うための bash 関数を作成するfirebase-dot-files という個人プロジェクトがあります。それらの1つはデータの転送です。bash 関数をセットアップしたら、次のコマンドを実行できます。

transfer_to dev-firebase staging-firebase

詳細については、このブログ投稿もお読みください。

npm モジュールとしての Firebase CLI

Firebase CLI はノード モジュールとしても使用できます。つまり、通常の CLI メソッドを関数として呼び出すことができます。

以下は単純な data:get コマンドです。

var client = require('firebase-tools');
client.data.get('/', { firebase: '<my-firebase-db>', output: 'output.json'})
  .then(function(data) {
    console.log(data);
    process.exit(1);
  })
  .catch(function(error) {
    console.log(error);
    process.exit(2);
  });

データを転送するには、data:get と data:set を組み合わせることができます。

function transfer(path, options) {
  var fromDb = options.fromDb;
  var toDb = options.toDb;
  var output = options.output;
  client.data.get(path, { firebase: fromDb, output: output })
    .then(function(data) {
      return client.data.set(path, output, { firebase: toDb, confirm: true });
    })
    .then(function(data) {
      console.log('transferred!');
      process.exit(1);
    })
    .catch(function(error) {
      console.log(error);
      process.exit(2);
    });
}

transfer('/', { fromDb: '<from>', toDb: 'to',  output: 'data.json' });
于 2015-12-13T13:44:02.243 に答える