# #javascript #google-cloud-firestore
Вопрос:
Я использую vue3 и firestore
Ссылаясь на официальный документ firestore, был способ получить документы через сбор. Но это способ получить все данные для сбора.
const citiesRef = db.collection('cities');
const snapshot = await citiesRef.get();
snapshot.forEach(doc => {
console.log(doc.id, '=>', doc.data());
});
Я хочу получить один документ через сбор.
Как получить один документ, это
const cityRef = db.collection('cities').doc('SF');
const doc = await cityRef.get();
Это коллекция, за которой следует doc().
Я не могу вставить значение в документ, потому что documemt-это автоматически сгенерированный идентификатор. Поэтому я не знаю, что делать.
Ответ №1:
Вы не упомянули, какой именно документ вы конкретно ищете. В случае, если вы не знаете идентификатор документа Firestore, вы можете попробовать выполнить простой запрос, используя .where()
следующее:
const db = firebase.firestore()
db.collection("cities").where("cityName", "==", 'London').get().then(querySnapshot => {
const matchedDoc = querySnapshot.doc[0]
})
В приведенном выше примере найден документ, в котором поле cityName
равно London
(оба учитывают регистр). QuerySnapshot содержит все документы, которые соответствовали вашему условию, указанному в методе where (). Но в случае, если вы знаете, что есть только один соответствующий документ, так как в моем случае у меня есть только один документ с именем города Лондон, вы можете напрямую получить доступ к данным документа следующим образом: querySnashots.docs[0].data()
. querySnapshot.docs
представляет собой массив. [0]
является первым документом в нем и .data()
анализирует данные из документа doc. Кроме того, вы можете использовать querySnapshot.size
для получения количества документов, возвращенных из запроса.