问题描述: 在使用Apollo GraphQL进行ID查询时,返回的结果为null。
解决方法:
// GraphQL schema定义
type User {
id: ID!
name: String
email: String
}
type Query {
user(id: ID!): User
}
// GraphQL解析器
const resolvers = {
Query: {
user: (parent, { id }, context, info) => {
// 根据id查询用户
const user = getUserById(id);
return user; // 确保返回正确的查询结果
},
},
};
// 示例的getUserById函数,用于根据id查询用户
function getUserById(id) {
// 查询数据库或其他数据源,返回用户对象
// 如果找不到用户,应该返回null而不是undefined
}
// Apollo Client示例代码
import { ApolloClient, InMemoryCache, gql } from '@apollo/client';
const client = new ApolloClient({
uri: 'http://localhost:4000/graphql', // GraphQL服务器端的URL
cache: new InMemoryCache(),
});
const GET_USER_QUERY = gql`
query GetUser($id: ID!) {
user(id: $id) {
id
name
email
}
}
`;
// 在组件中发起ID查询
client
.query({
query: GET_USER_QUERY,
variables: { id: '123' }, // 替换为真正的ID值
})
.then((result) => {
const user = result.data.user;
console.log(user); // 确保user对象不为null
})
.catch((error) => {
console.error(error);
});
在这个示例中,确保在客户端发起ID查询时,传递了正确的ID参数,并在查询结果中检查返回的用户对象是否为null。
希望以上解决方法可以帮助到你解决问题。