Я хочу, чтобы у всех пользователей было имя службы, которую я храню в базе данных Firebase,
Идея состоит в том, что когда я щелкаю по какой-либо категории на главном экране, я передаю название этой категориивторой экран, поэтому на втором экране я хочу, чтобы все пользователи имели одинаковое имя службы, после чего я хочу обработать их в своей функции. Чтобы получить всех ближайших пользователей, которых я получил, вот структура базы данных
, как вы видите, я сохраняю название службы с другими данными,
здесь есть функция, которую могут получить все пользователи без каких-либо фильтров по услугам
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;
}