如果我在Apollo Client中使用dataIdFromObject设置唯一标识符,则必须使用graphql的ID类型

Red*_*ant 13 javascript reactjs graphql react-apollo apollo-client

我正在使用graphql + mysql + react-apollo,这里是User表格的graphql类型之一:

type User {
  id: ID!
  name: String!
}
Run Code Online (Sandbox Code Playgroud)

我有问题ID scalar typegraphql是,当主键,它是作为一个字符串返回int在MySQL和它创造与打字稿前端某种类型的冲突.

我可以根本不使用ID标量类型,因为我已经dataIdFromObject为Apollo Client中的每个对象设置了一个唯一标识符:

import {InMemoryCache} from 'apollo-cache-inmemory';

const apolloMemoryCache = new InMemoryCache(
    {
        dataIdFromObject: ({id,__typename}) => {

          return __typename+id

        }
    }
);

const client = new ApolloClient({
   link: ApolloLink.from([authLink, httpLink]),
   cache: apolloMemoryCache,
 });
Run Code Online (Sandbox Code Playgroud)

你会保留ID类型还是只丢弃它?

小智 0

试试这个 type User { id: Int! name: String! }