#javascript #reactjs #firebase #react-native #google-cloud-firestore
#javascript #reactjs #firebase #реагирующий — собственный #google-облако-firestore
Вопрос:
В настоящее время я работаю над мобильным приложением на React, и у меня возникают проблемы с пониманием того, как сохранить поле из firestore, которое является массивом.
Поскольку я не могу публиковать изображения, моя структура базы данных состоит из всех строк, таких как имя пользователя, имя и т. Д., Но у меня есть поле с именем follow list, которое представляет собой массив.
Что я хочу сделать, так это сохранить имена пользователей из следующего списка в массив, чтобы позже выполнить поиск в fire Store для имени пользователя в массиве, это в основном то, что я хочу сделать, чтобы я мог отображать социальную ленту моего приложения. Я знаю, что я, вероятно, могу создать еще одну вложенную коллекцию и написать что-то знакомое с тем, что я делал для поиска пользователей, но это был QuerySnapShot, который был общим документом, а не конкретным, и я также знаю, что firebase создает идентификатор для массивов, и он увеличивается по мере увеличения массива.
Я не хочу в конечном итоге создавать еще две вложенные коллекции, одну для подписчиков и следующую, которые я считаю не идеальными, верно? Мой текущий подход заключается в следующем
export const fetchUserFollowing = async (username) => {
const ref = firebase.firestore().collection('users').doc(username)
let results = []
ref
.get()
.then( doc => {
let data = doc.data()
results = data
})
.catch((err) => {
return 'an error has occurred ', err
})
}
Насколько я понимаю, функция DocumentSnapShot .get() возвращает объект, но я хочу сохранить список следования в результатах, а затем вернуть его, но я не уверен, как управлять возвратом объекта, чтобы просто дать мне список следования, который является массивом
https://rnfirebase.io/docs/v5.x.x/firestore/reference/DocumentSnapshot ссылка на документы
Комментарии:
1. «Поскольку я не могу публиковать изображения, моя структура базы данных …» Вы можете опубликовать фактический JSON в виде текста вместо скриншота.
2. Мне трудно понять, о чем вы нас просите. Что делает код, которым вы поделились? И что вы ожидаете, что оно будет делать по-другому?
3. прямо сейчас мой код получает данные из базы данных, но я хочу, чтобы он сохранял только следующее поле списка, которое является массивом
4. Вы пытаетесь получить одно поле из документа? В этом случае вы можете просто обратиться к нему из
doc.data()
. Что-то вродеlet data = doc.data(); results = data.field_you_want
.5. Или ваша проблема в том, что вызываемая функция
fetchUserFollowing
не получает результатов. Это объясняется тем фактом, что вы ничего не возвращаете. Вы захотите взглянуть на promises, чтобы узнать, как возвращать значение из асинхронной функции.