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'];
});
});