Firestore – это популярная база данных документов NoSQL, предоставляемая Google Cloud Platform. При работе с Firestore могут быть случаи, когда вам нужно получить только идентификаторы документов без получения всех данных документа. В этой статье мы рассмотрим несколько методов эффективного выполнения этой задачи. Итак, хватайте чашечку кофе и приступайте!
Метод 1. Запрос идентификаторов документов с использованием select()
:
const db = firebase.firestore();
const collectionRef = db.collection('your_collection');
collectionRef.select().get().then((querySnapshot) => {
const docIds = querySnapshot.docs.map((doc) => doc.id);
console.log(docIds); // Array of document IDs
});
Метод 2: использование FieldPath.documentId()
:
const db = firebase.firestore();
const collectionRef = db.collection('your_collection');
collectionRef.select(firebase.firestore.FieldPath.documentId()).get().then((querySnapshot) => {
const docIds = querySnapshot.docs.map((doc) => doc.id);
console.log(docIds); // Array of document IDs
});
Метод 3. Использование listDocuments()
для получения идентификаторов документов:
const db = firebase.firestore();
const collectionRef = db.collection('your_collection');
collectionRef.listDocuments().then((documents) => {
const docIds = documents.map((doc) => doc.id);
console.log(docIds); // Array of document IDs
});
Метод 4. Оптимизация с помощью FieldValue.delete()
:
const db = firebase.firestore();
const collectionRef = db.collection('your_collection');
collectionRef.get().then((querySnapshot) => {
const docIds = querySnapshot.docs.map((doc) => {
const data = doc.data();
Object.keys(data).forEach((field) => {
if (data[field] === firebase.firestore.FieldValue.delete()) {
delete data[field];
}
});
return { id: doc.id, ...data };
});
console.log(docIds); // Array of document IDs
});
Получение только идентификаторов документов из Firestore может оказаться удобным методом оптимизации, если вам не нужны полные данные документа. В этой статье мы рассмотрели несколько методов эффективного достижения этой цели. Используя эти методы, вы можете повысить производительность и сократить ненужную передачу данных в запросах Firestore. Попробуйте и посмотрите, какой из них лучше всего подходит для вашего случая использования.