TypeError: String cannot represent value: graphql Query not working
TypeError: String cannot represent value: graphql Query not working
我正在尝试 运行 graphql 查询,但它一直给我 "TypeError: String cannot represent value:" 错误。
我的查询的架构:
type User {
active: Boolean!
email: String!
fullname: String!
description: String!
tags: [String!]!
}
type Query {
getAllUsers: [User]!
}
我的解析器:
Query: {
getAllUsers: (_, __, { dataSources }) => {
return dataSources.userAPI.getAllUsers();
}
}
用户API:
getAllUsers() {
const params = {
TableName: 'Users',
Select: 'ALL_ATTRIBUTES'
};
return new Promise((resolve, reject) => {
dynamodb.scan(params, function(err, data) {
if (err) {
console.log('Error: ', err);
reject(err);
} else {
console.log('Success');
resolve(data.Items);
}
});
});
}
查询:
query getAllUsers{
getAllUsers{
email
}
}
因为我的电子邮件是一个字符串,所以我得到的错误是 "String cannot represent value"。
解析器中 return 的内容应与架构指定的形状相匹配。如果您的用户模式是
type User {
active: Boolean!
email: String!
fullname: String!
description: String!
tags: [String!]!
}
那么您 return 的用户数组应该如下所示:
[{
active: true,
email: 'kaisinnn@li.com',
fullname: 'Kaisin Li',
description: 'Test',
tags: ['SOME_TAG']
}]
您实际 returning 的数据的形状大不相同:
[{
active: {
BOOL: true
},
description: {
S: 'Test'
},
fullname: {
S: 'Kaisin Li'
},
email: {
S: 'kaisinnn@li.com'
},
}]
您需要映射您从扫描操作中获得的数组并将结果转换为正确的形状,或者为每个单独的字段编写解析器。例如:
const resolvers = {
User: {
active: (user) => user.active.BOOL,
description: (user) => user.description.S,
// and so on
}
}
我正在尝试 运行 graphql 查询,但它一直给我 "TypeError: String cannot represent value:" 错误。
我的查询的架构:
type User {
active: Boolean!
email: String!
fullname: String!
description: String!
tags: [String!]!
}
type Query {
getAllUsers: [User]!
}
我的解析器:
Query: {
getAllUsers: (_, __, { dataSources }) => {
return dataSources.userAPI.getAllUsers();
}
}
用户API:
getAllUsers() {
const params = {
TableName: 'Users',
Select: 'ALL_ATTRIBUTES'
};
return new Promise((resolve, reject) => {
dynamodb.scan(params, function(err, data) {
if (err) {
console.log('Error: ', err);
reject(err);
} else {
console.log('Success');
resolve(data.Items);
}
});
});
}
查询:
query getAllUsers{
getAllUsers{
email
}
}
因为我的电子邮件是一个字符串,所以我得到的错误是 "String cannot represent value"。
解析器中 return 的内容应与架构指定的形状相匹配。如果您的用户模式是
type User {
active: Boolean!
email: String!
fullname: String!
description: String!
tags: [String!]!
}
那么您 return 的用户数组应该如下所示:
[{
active: true,
email: 'kaisinnn@li.com',
fullname: 'Kaisin Li',
description: 'Test',
tags: ['SOME_TAG']
}]
您实际 returning 的数据的形状大不相同:
[{
active: {
BOOL: true
},
description: {
S: 'Test'
},
fullname: {
S: 'Kaisin Li'
},
email: {
S: 'kaisinnn@li.com'
},
}]
您需要映射您从扫描操作中获得的数组并将结果转换为正确的形状,或者为每个单独的字段编写解析器。例如:
const resolvers = {
User: {
active: (user) => user.active.BOOL,
description: (user) => user.description.S,
// and so on
}
}