人間が読みやすいように数値IDが必要です。 Firebaseで取得するにはどうすればよいですか?
キーの数値IDが必要です。 「000000001」、「000000002」、「00000003」、「00000004」。
必要な理由は、これらのIDがオンラインとオフラインの両方で永続的なオブジェクトIDになるためです。ユーザーがURL「/ objects/00000001」を入力するだけで、苦労せずにそのオブジェクトページを閲覧できるようにします。
.priority
、サブプロパティなどを使用せずにこれを行うことができるかどうかを知りたいので、ここで尋ねています。set
メソッドが何らかの形でそれを行うことができると思います。それが不可能な場合は、ノーと言ってください、私はその答えを受け入れることができます。
Firebaseのドキュメントを読むことをお勧めします。具体的には、Firebase JavaScript Webガイドの Saving Data の部分をご覧ください。
ガイドから:
Push()によって生成された一意のIDを取得する
Push()を呼び出すと、新しいデータパスへの参照が返されます。これを使用して、IDの値を取得したり、データにデータを設定したりできます。次のコードは上記の例と同じデータになりますが、生成された一意のプッシュIDにアクセスできるようになります
// Generate a reference to a new location and add some data using Push() var newPostRef = postsRef.Push({ author: "gracehop", title: "Announcing COBOL, a New Programming Language" }); // Get the unique ID generated by Push() by accessing its key var postID = newPostRef.key;
出典: https://www.firebase.com/docs/web/guide/saving-data.html
key
としてサーバーのタイムスタンプを使用して、新しいデータパスを生成します。これらのキーは-JiGh_31GA20JabpZBfa
のように見えるため、数値ではありません。ガイドから:
JavaScriptでは、Push()を呼び出してすぐにset()を呼び出すパターンが非常に一般的であるため、次のように、設定するデータを直接Push()に渡すだけでそれらを組み合わせることができます。次の両方の書き込み操作により、同じデータがFirebaseに保存されます。
// These two methods are equivalent postsRef.Push().set({ author: "gracehop", title: "Announcing COBOL, a New Programming Language" }); postsRef.Push({ author: "gracehop", title: "Announcing COBOL, a New Programming Language" });
出典: https://www.firebase.com/docs/web/guide/saving-data.html
上記で説明したように、FirebaseのデフォルトのプッシュIDを使用できます。
数値が必要な場合は、衝突を避けるためにタイムスタンプに基づいて何かを行うことができます
f.e.日付、時間、秒、ミリ秒、および最後のランダムな整数に基づいたもの
01612061353136799031
次のように変換されます:
016-12-06 13:53:13:679 9031
それはすべて、必要な精度に依存します(社会保障番号は、日付の終わりにランダムな文字を使用しても同じです)。 1日、1時間、または1秒の間に予想されるトランザクション数など。入力しやすくするために、精度を下げることができます。
番号IDをインクリメントするトランザクションを実行することもできます。成功すると、そのユーザーに一意の連続した番号が割り当てられます。これらは、クライアント側またはサーバー側で実行できます。
( https://firebase.google.com/docs/database/Android/read-and-write )
ドキュメント のように、これはset
の代わりにPush
を使用するだけで実現できます。
ドキュメントが言うように、それは推奨されません(「同じ」時間に他のユーザーによって上書きされる可能性があるため)。
ただし、場合によっては、キーを含むフィードのコンテンツを制御すると便利です。
Jsでのwebappの例として、193は他の場所で生成されたidであり、単純に:
firebase.initializeApp(firebaseConfig);
var data={
"name":"Prague"
};
firebase.database().ref().child('areas').child("193").set(data);
これにより、193というラベルの付いた領域が上書きされるか、まだ存在しない場合は作成されます。