Как отфильтровать всех пользователей в одной категории реагируют на родных - PullRequest
0 голосов
/ 11 мая 2019

Я хочу, чтобы у всех пользователей было имя службы, которую я храню в базе данных Firebase,

Идея состоит в том, что когда я щелкаю по какой-либо категории на главном экране, я передаю название этой категориивторой экран, поэтому на втором экране я хочу, чтобы все пользователи имели одинаковое имя службы, после чего я хочу обработать их в своей функции. Чтобы получить всех ближайших пользователей, которых я получил, вот структура базы данных

db

, как вы видите, я сохраняю название службы с другими данными,

здесь есть функция, которую могут получить все пользователи без каких-либо фильтров по услугам

 handleProvider = () => {
        const providerRef = firebase.database().ref('providers'); // all of them!
        providerRef.once('value').then(snapshot => {
            let newState = [];
            snapshot.forEach(async (childSnapshot) => {
                await newState.push({
                    id: childSnapshot.val().id,
                    username: childSnapshot.val().username,
                    coordinates: {
                        longitude: childSnapshot.val().coordinates.longitude,
                        latitude: childSnapshot.val().coordinates.latitude,
                    },
                    service: childSnapshot.val().service,
                    price: childSnapshot.val().price
                });

            });
            // newState.map(x => console.log(x.service))
            this.setState({ providers: newState }, () => {
                this.handleNearby();
                // let x = this.state.providers.filter(x => x.service === this.props.navigation.getParam("service"))
                // console.log('@X', x)
            })
        });
    }

и здесь другие функции, основанные на последней функции

handleNearby = () => {
        const { region, providers } = this.state;
        let currentPoint = [region.longitude, region.latitude]
        let points = _.map(providers, p => {
            const to = [p.coordinates.longitude, p.coordinates.latitude];
            const distance = turf.distance(currentPoint, to, { units: 'kilometers' });
            return { coords: p.coordinates, name: p.username, id: p.id, service: p.service, distance }
        });
        const sortPoints = _.sortBy(points, ['distance']);
        this.setState({ sortedMarkers: sortPoints });
        return;
}
...