я следующий маршрутизатор и маршруты, используя react-router-relay пакетGraphQL с React маршрутизатор реле: Ожидаемый типа Int, найденной строку для числового маршрута
ReactDOM.render(
<Router
history={browserHistory}
render={applyRouterMiddleware(useRelay)}
environment={Relay.Store}
>
<Route
path="/user/:userId"
component={User}
queries={StoreQueries}
/>
</Router>,
document.getElementById('root')
);
Мой StoreType из GraphQL выглядит следующим образом, с полем пользователя, принимающим аргумент идентификатор, представляющий ненулевое целое число:
let StoreType = new GraphQLObjectType({
name: 'Store',
fields:() => ({
user: {
type: UserType,
args: {
id: {
type: new GraphQLNonNull(GraphQLInt)
}
},
resolve: (root, args) => db.user.findById(args.id)
},
})
})
Мой релейный контейнер для user/:userId
маршрута:
import React from 'react';
import Relay from 'react-relay'
class User extends React.Component {
render() {
return <div>
User goes here!
</div>;
}
}
User = Relay.createContainer(User, {
initialVariables: {
userId: null,
},
fragments: {
store:() => Relay.QL`
fragment on Store {
user(id: $userId) {
name
}
}
`
}
});
export default User;
Когда я посещаю/пользователь/1 в браузере, реагирующий-маршрутизатор-релейное лакомство :userId
в виде строки из маршрута, а не целое, а GraphQL возвращает сообщение JSON-закодированные ошибки "Argument \"id\" has invalid value \"1\".\nExpected type \"Int\", found \"1\"."
Есть ли способ передать аргумент userId, переданный в URL-адресе, целому числу? Или есть собственный скалярный тип GraphQL, который поддерживает хорошо сформированные числовые строки, а также целые числа? Любой ввод или руководство по этому вопросу оцениваются.