Совершенно новый для приложений React on Rails, особенно часть React. Я пытаюсь получить доступ к данным в виде вложенного хэша, полученного из запроса SQL в службе Rails. Во-первых, это вообще возможно?
В Rails Console предположим, что user1 уже был найден по id, LedgersService.transactions (user1) .first возвращает все данные в этом формате:
{: transactable => {: тип => "Депозит",
: Идентификатор => "28cba04f-5b9d-4c9c-AFCA-b09a6e0e8739",
: User_id => "72700244-e6b0-4baf-a381-c22bfe56b022",
: transacted_at => "2019-03-12 19: 04: 48.715678",: amount_cents => 15,
: notes => "none",: processor => nil,: details => nil},
: ledgers => [{: entry_type => "credit",: amount_cents => 15,
: transacted_at => "2019-03-12 19: 04: 48.715678",
: User_id => "72700244-e6b0-4baf-a381-c22bfe56b022",
: Transactable_type => "Депозит",
: Transactable_id => "28cba04f-5b9d-4c9c-AFCA-b09a6e0e8739"}]}
Я пытаюсь сделать что-то подобное в моем компоненте React, чтобы попытаться получить данные, однако я не совсем уверен, как установить часть LedgersService.transactions. Вот как у меня это сейчас:
class LedgersIndex extends React.Component {
constructor(props) {
super(props);
this.state = { ledgers_service: { transactions: [] }, paginator: { count: 0, page: 0, limit: 0 }, user: { id: this.props.match.params.user_id } };
Мой вызов в конечной точке:
componentDidMount() {
var user_id = this.state.user.id;
this.fetchData(user_id, 1);
}
fetchData = (user_id, page_number) => {
apiService.ledgersIndex(user_id, page_number)
.then(
paginated => {
this.setState({
ledgers_service: {
transactions: paginated.ledgers_service.transactions
},
paginator: {
limit: paginated.meta.limit,
count: paginated.meta.count,
page: paginated.meta.page -1
}
});
},
Далее в моем рендере:
render() {
const { classes } = this.props;
const { ledgers_service, paginator } = this.state;
Мой выбор в apiService:
function locationsIndex(page_number) {
const requestOptions = {
method: 'GET',
headers: Object.assign({},
authorizationHeader(),
{ 'Content-Type': 'application/json' })
};
return fetch(`${process.env.API_SERVER}/api/v1/admin/locations?page=${page_number}`, requestOptions)
.then(handleResponse)
.then(paginated => {
return paginated;
});
}
Когда я console.log (ledgers_service.transactions (this.state.user.id)), я получаю сообщение об ошибке, что ledgers_service.transactions не является функцией. console.log (paginator.count) однако работал, это потому что транзакции устанавливаются в массив?
Как правильно получить ту же самую конечную точку в моем компоненте React, которую я получил от своей консоли rails?