как сделать два вызова mongodb, чтобы получить данные и передать их компоненту son?

#reactjs #ajax #mongodb #mongoose

Вопрос:

я создаю приложение, в котором пользователь может сохранять свои избранные активы, опубликованные для аренды … и смотрите их на другой странице под названием «Избранное».

 class Favorites extends Component {    state = {   cards: [],    };   async componentDidMount() {   const { data } = await userMethods.getUserFavorites();   const favoritesArray = data.favorites;   for (var cardId of favoritesArray) {  const { data } = await cardService.getFavoritesCards(cardId);  let arr = [];  arr.push(data);  console.log(arr);  this.setState({ cards: arr })  }    }   render() {   const { cards } = this.state;  console.log(cards);   return (   lt;div className="container" gt;  lt;PageHeadergt;My favoriteslt;/PageHeadergt;  lt;div className="row"gt;  lt;div className="col-12 mt-4"gt;  {cards.length gt; 0 amp;amp; lt;pgt;This are the chosen one's...lt;/pgt;}  lt;/divgt;  lt;/divgt;  lt;div className="row"gt;  {cards.length gt; 0 amp;amp;  cards.map(card =gt; lt;CardFavorite card={card} key={card._id} /gt;)  }  lt;/divgt;  lt;/divgt;   );  } }  export default Favorites;  

в этом запросе ===gt; const { данные } = ждите пользователей. getUserFavorites(); я получаю массив с идентификаторами карт .. мне нужно сделать еще один запрос к конечной точке, которая повторно использует карты с заданными идентификаторами.. но когда я передаю его компоненту son, он выдает мне только одну карту .. пожалуйста, помогите

Ответ №1:

При каждой итерации цикла for вы создаете новый пустой массив, помещаете в него полученные данные и устанавливаете их в состояние. на следующей итерации вы снова создадите новый пустой массив.

сначала вы должны получить текущее состояние и ввести в него новые данные, а затем сохранить их в этом состоянии

 for (var cardId of favoritesArray) {  const { data } = await cardService.getFavoritesCards(cardId);  let arr = [...this.state.cards];  arr.push(data);  console.log(arr);  this.setState({ cards: arr }) }  

Комментарии:

1. можете ли вы отправить мне свою почту или свой facebook, чтобы я мог проконсультироваться с вами ?

2. к сожалению, нет 😉 вы можете задать свой вопрос здесь, и все сообщество может вам помочь 😀

3. Большое вам спасибо, барзин .. вы решили мою проблему:-)