2017-07-12 9 views
0

firebaseのようなルートを持っていますが、ユーザがリストのアイテムを削除できるようにしようとしています。しかし、ユーザーは彼の決定をあきらめることができます。ユーザーがこの決定をあきらめたら、削除したアイテムを再度データベースに挿入したいと思います。しかし、firebaseプッシュキーを使用しているため、古いfirebaseで生成されたキーを挿入したい。それは悪い習慣ですか? firebaseがこれらの鍵を生成する方法は? dbのすべてのキーをチェックして新しいキーを生成しますか?その可能性はありますか、そのキーは削除されてマークされ、後で別のアイテムのために生成されますか?ごめんなさい。それは表現するのが難しいです。生成されたキーを持つFirebaseの挿入

EDITED:orderByKeyを使用してデータを取得しているため、古いキーを使用します。私は命令を失いたくない。

enter image description here

答えて

2

? dbのすべてのキーをチェックして新しいキーを生成しますか?

データベース参照でpushを使用すると、サーバーのタイムスタンプを含む一意のキーを持つ新しいデータノードが生成されます。これらのキーは - KiGh_31GA20KabpZBfaのようになります。

タイムスタンプのため、データベース内の他のキーを確認することなく、指定したキーが一意であることを確認できます。

その可能性はありますか?そのキーは削除済みとマークされ、後で別のアイテム用に生成されますか?

いいえ、削除されているかどうかにかかわらず、2つのキーが衝突する可能性はありません。

しかし、firebaseプッシュキーを使用しているため、古いfirebaseで生成されたキーを挿入したいと思います。それは悪い練習です

残念ながら、pushを使うだけで、同じキーを2回生成することはできません。したがって、pushは別の一意のキーを生成するため、同じキーを持つノードを削除してからpushを使用して同じパスで再度挿入することはできません。これに代えて

、キーによって発注すると、そのあなたにとって重要、および削除ノードは、その後、私は、次のいずれかを実行するためにあなたを推薦する再挿入することができる可能性がありますある場合: -

  1. どちらかデータベースから削除されたときにクライアント側にキーを保存し、再挿入が必要なときに使用します。

  2. また、データベースに「削除されたキー」のパスがあり、そこで削除されたキーを保存することもできます。もちろん、このアプローチでは、キーが対応するデータを識別するための追加情報を格納する必要があります。

これはすべて実際の使用状況によって異なります。

+0

あなたの素晴らしい答えをありがとう。私はすでにそのアイテムのキーを知っています。私はデータを取得するときにそれらをマッピングしています。だから、私は削除されたキーを知っていると私は再びそれを挿入することができます。私は実際にfirebaseのキーのアイデアを得る。ありがとうございました。 :) – starrystar

+0

素晴らしい!お役に立てて嬉しいです :) –

2

あなたのためのキーを生成しますプッシュ()を呼び出します。

代わりにchild()を使用する場合は、キー/パスを自分で決定できます。これらのキーを生成する方法firebase

ref.child("yourvalue").setValue("setting custom key when pushing new data to firebase database"); 

https://firebase.googleblog.com/2015/02/the-2120-ways-to-ensure-unique_68.html

+0

私は知っていますが、私は古い鍵を使いたいです。私は命令を失いたくないので。私はorderByKey()でデータを取得しています。古い鍵を新しい鍵として使用することによって、将来起こり得る可能性のある害はありますか? – starrystar

+0

あなたの要求から古い鍵を古いものにして、それをここに設定すれば、それは仕事をするでしょう –

+0

私はそれが仕事をすることを知っています。私はちょうど知りたい、このような手でそれを使用することは危険です。 – starrystar

関連する問題