如何在 GraphQL 中通过用户名获取用户?
How can I get user by userName in GraphQL?
我有这个 RootQuery:
const RootQuery = new GraphQLObjectType({
name: 'RootQueryType',
fields: {
user: {
type: UserType,
args: { id: { type: GraphQLID } },
resolve(parent, {id}) {
return User.findById(id)
}
},
然后我将使用此查询获取用户:
{
user(id:"5bd78614e71a37341cd2b647"){
id
userName
password
isAdmin
}
}
它工作得很好'现在我不想通过他的 ID 获取用户,
我想通过他的用户名找到他,所以我使用了这个
const RootQuery = new GraphQLObjectType({
name: 'RootQueryType',
fields: {
user: {
type: UserType,
args: { userName: { type: GraphQLString } },
resolve(parent, {userName}) {
console.log('userName',userName)
return User.find({ userName })
}
},
这将带回所有属性为空的用户
请帮忙!!
首先,您应该使用 findOne
来只获得一个用户,find
会为您带来所有具有该名称的用户。如果你想要那个,也许你的 return 应该是 type: GraphQLList(UserType)
。
如果它带来了所有属性,那可能是因为您在查询中要求它们。
此外,您的函数可能缺少 await User.find({ userName })
和 async
:
const RootQuery = new GraphQLObjectType({
name: 'RootQueryType',
fields: {
user: {
type: UserType,
args: { userName: { type: GraphQLString } },
resolve: async (parent, {userName}) => {
console.log('userName',userName)
const user = await User.findOne({ userName })
console.log('user',user);
return user;
}
},
检查这是否对您有帮助:)
我有这个 RootQuery:
const RootQuery = new GraphQLObjectType({
name: 'RootQueryType',
fields: {
user: {
type: UserType,
args: { id: { type: GraphQLID } },
resolve(parent, {id}) {
return User.findById(id)
}
},
然后我将使用此查询获取用户:
{
user(id:"5bd78614e71a37341cd2b647"){
id
userName
password
isAdmin
}
}
它工作得很好'现在我不想通过他的 ID 获取用户, 我想通过他的用户名找到他,所以我使用了这个
const RootQuery = new GraphQLObjectType({
name: 'RootQueryType',
fields: {
user: {
type: UserType,
args: { userName: { type: GraphQLString } },
resolve(parent, {userName}) {
console.log('userName',userName)
return User.find({ userName })
}
},
这将带回所有属性为空的用户 请帮忙!!
首先,您应该使用 findOne
来只获得一个用户,find
会为您带来所有具有该名称的用户。如果你想要那个,也许你的 return 应该是 type: GraphQLList(UserType)
。
如果它带来了所有属性,那可能是因为您在查询中要求它们。
此外,您的函数可能缺少 await User.find({ userName })
和 async
:
const RootQuery = new GraphQLObjectType({
name: 'RootQueryType',
fields: {
user: {
type: UserType,
args: { userName: { type: GraphQLString } },
resolve: async (parent, {userName}) => {
console.log('userName',userName)
const user = await User.findOne({ userName })
console.log('user',user);
return user;
}
},
检查这是否对您有帮助:)