Сохранение поля из firestore, которое является массивом

#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, чтобы узнать, как возвращать значение из асинхронной функции.