sourcetip

Firebase: 키에 대한 고유한 숫자 ID를 생성하는 방법은 무엇입니까?

fileupload 2023. 6. 27. 22:30
반응형

Firebase: 키에 대한 고유한 숫자 ID를 생성하는 방법은 무엇입니까?

인간의 가독성을 위해 숫자 ID가 필요합니다.파이어베이스에서 어떻게 얻나요?

키에 대한 숫자 ID(예: "0000001", "0000002", "00000003", "00000004")를 원합니다.

제가 그것을 필요로 하는 이유는 이 ID들이 온라인과 오프라인 모두에서 영구 객체 ID가 될 것이기 때문입니다.저는 사용자들이 URL "/objects/00000001"만 입력하면 해당 오브젝트 페이지를 쉽게 찾아볼 수 있기를 바랍니다.

저는 이것이 사용하지 않고 수행될 수 있는지 알고 싶어서 여기에 문의합니다..priority하위 속성 등그런 것 같다.set방법은 어떻게든 할 수 있습니다.만약 불가능하다면, 그냥 아니라고 말해주세요, 저는 그 대답을 받아들일 수 있습니다.

파이어베이스 문서를 읽어보는 것이 좋습니다.특히 Firebase JavaScript 웹 안내서의 데이터 저장 부분을 참조하십시오.

가이드에서:

푸시()에 의해 생성된 고유 ID 가져오기

하기 르기push()새 데이터 경로에 대한 참조를 반환합니다. 이 경로를 사용하여 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://firebase.google.com/docs/database/admin/save-data#section-ways-to-save

  • 타임스탬프인 새 경로가 됩니다.key은 이키다음같다니습과처럼 .-JiGh_31GA20JabpZBfa숫자가 아닙니다.
  • 숫자 전용 ID를 만들려는 경우 생성된 키를 덮어쓰지 않도록 개체의 매개 변수로 만들 수 있습니다.
    • 키(새 데이터의 경로)는 고유하므로 숫자 키로 덮어쓸 필요가 없습니다.
    • 대신 숫자 ID를 개체의 자식으로 설정할 수 있습니다.
    • 그런 다음 Firebase 쿼리를 사용하여 해당 ID 자식으로 개체를 쿼리할 수 있습니다.

가이드에서:

자스크트서, 의패턴은을 부르는 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://firebase.google.com/docs/database/admin/save-data#getting-the-unique-key-generated-by-push

위에서 설명한 대로 Firebase 기본 푸시 ID를 사용할 수 있습니다.

숫자를 원하는 경우 타임스탬프를 기반으로 충돌을 방지하는 작업을 수행할 수 있습니다.

f.e. 날짜, 시간, 초, ms 및 마지막에 임의의 int를 기반으로 하는 것.

01612061353136799031

다음 뜻은 다음과 같습니다.

016-12-06 13:53:13:679 9031

이 모든 것은 필요한 정확도에 따라 달라집니다(사회 보장 번호는 날짜 끝에 있는 일부 임의의 문자에도 동일하게 적용됨).하루, 시간 또는 초 동안 예상되는 트랜잭션 수와 같은 것입니다.입력하기 쉽도록 정밀도를 낮추는 것이 좋습니다.

숫자 ID가 증가하는 트랜잭션을 수행할 수도 있으며, 성공하면 해당 사용자에 대한 고유한 연속 번호를 갖게 됩니다.이 작업은 클라이언트 또는 서버 측에서 수행할 수 있습니다.

(https://firebase.google.com/docs/database/android/read-and-write)

@htafoya 답변에 추가.코드 스니펫은 다음과 같습니다.

const getTimeEpoch = () => {
    return new Date().getTime().toString();                             
}

의사들이 말했듯이, 이것은 단지 사용함으로써 달성될 수 있습니다.set대신에 만약에push.

문서에 나와 있듯이 ("동시"에 다른 사용자가 덮어쓸 수 있기 때문에) 권장되지 않습니다.

그러나 경우에 따라 키를 포함한 피드의 내용을 제어하는 것이 유용합니다.

웹앱 js의 예로 193은 다른 곳에서 생성된 당신의 ID입니다.

 firebase.initializeApp(firebaseConfig);
  var data={
      "name":"Prague"
  };
  firebase.database().ref().child('areas').child("193").set(data);

193으로 표시된 영역을 덮어쓰거나 아직 존재하지 않는 경우 영역을 만듭니다.

https://firebase.google.com/docs/firestore/manage-data/transactions

트랜잭션을 사용하고 숫자를 하나씩 늘릴 수 있는 데이터베이스에 유지합니다.이렇게 하면 멋진 숫자와 간단한 ID를 얻을 수 있습니다.

언급URL : https://stackoverflow.com/questions/28822054/firebase-how-to-generate-a-unique-numeric-id-for-key

반응형