見出し画像

firebase.firestore にて key 名でソート

firebase.firestore で、データの検索(クエリ)をかける時に orderBy('項目名') でクエリ結果をソートできる。

objects = [
  1: {
    name: 'mike',
  },
  3: {
    name: 'ace',
  },
  2: {
    name: 'fred',
  },
];

のようなデータ構造を objects 持っているとした場合、 name で orderBy する場合は素直に name を orderBy に渡す。

const db = firebase.firestore();
const { currentUser } = firebase.auth();
db.collection(`users/${currentUser.uid}/objects`).orderBy('name').get()
  .then((snapshot) => {
     snapshot.forEach((doc) => {
       const data = doc.data();
       console.log(data.name);  // => ['ace', 'fred', 'mike'];
     });
  });

データの項目の値ではなく、 key 名 でソートをしたい場合はfirebase.firestore.FieldPath.documentId()をorderBy() に渡す。

const db = firebase.firestore();
const { currentUser } = firebase.auth();
db.collection(`users/${currentUser.uid}/objects`).orderBy(firebase.firestore.FieldPath.documentId()).get()
  .then((snapshot) => {
     snapshot.forEach((doc) => {
       const data = doc.data();
       console.log(data.name);  // => ['mike, 'fred', 'ace'];
     });
  });

いいなと思ったら応援しよう!