Как я могу ввести идентификатор в запрос Axios, чтобы получить конкретные данные из бэкэнда - PullRequest
0 голосов
/ 23 апреля 2019

ОК, так что вроде как здесь.Поэтому в настоящее время у меня есть данные в бэкэнде, где мне нужно было извлечь их, используя определенный идентификатор, чтобы он получал конкретные данные для этого пользователя.В бэкэнде мне просто нужно привести это в качестве аргумента.Во внешнем интерфейсе я могу получить «идентификатор» владельца, который мне нужно ввести в аргумент, который я просто не знаю, делаю ли я это прямо здесь, это мой код для моего внешнего интерфейса и контроллера server.alsoвот картинка из моих журналов 16 - код для конкретного пользователя, которого я использую введите описание изображения здесь


class GetDogs extends Component {
  constructor(props) {
    super(props);
    this.state = {
      id: "",
      dogs: []
    };
  }
  async componentDidMount() {
    //destructure get user function
    const { getUser } = this.props;
    //call function to get user info
    await getUser();
    //sets state into owner_id that i need to be put as the argument for my get dog's function
    await this.setState({ id: this.props.userReducer.user.owner_id });
    //call axios to bring dog info
    await axios
      .get(`/api/yourdogs`, {
        owner_id: this.state.id
      })
      .then(response => {
        this.setState({ dogs: response.data });
      });
  }
  render() {
    console.log(this.state.id);
    console.log(this.state.dogs);
    return <div>get dogs</div>;
  }
}
const mapStateToProps = state => state;

export default connect(
  mapStateToProps,
  { getUser }
)(GetDogs);
module.exports = {
  newDog(req, res) {
    const db = req.app.get("db");
    const { name, age, picture, breed, sex, owner_id } = req.body;
    db.newDog([name, age, picture, breed, sex, owner_id])
      .then(response => {
        res.status(200).send(response);
      })
      .catch(console.log);
  },
  getDogs(req, res) {
    const db = req.app.get("db");
    const { owner_id } = req.body;
    db.getDogs([owner_id])
      .then(response => res.status(200).json(response))
      .catch(console.log);
  }
};

1 Ответ

0 голосов
/ 23 апреля 2019

вместо того, чтобы делать так:

...
    await this.setState({ id: this.props.userReducer.user.owner_id });
    //call axios to bring dog info
    await axios
      .get(`/api/yourdogs`, {
        owner_id: this.state.id // i don't think this.state.id is already assign new value
      })
      .then(response => {
        this.setState({ dogs: response.data });
      });
...

итак, попробуйте так:

...
  this.setState({ id: this.props.userReducer.user.owner_id }, () => {
    //call axios to bring dog info
    axios
      .get(`/api/yourdogs`, {
        owner_id: this.state.id
      })
      .then(response => {
        this.setState({ dogs: response.data });
      });
  });
...
...