GraphQLクエリを実行しようとしていますが、「TypeError:Stringは値を表すことはできません:」というエラーを伝えます。
私のクエリのスキーマ:
type User {
active: Boolean!
email: String!
fullname: String!
description: String!
tags: [String!]!
}
type Query {
getAllUsers: [User]!
}
_
私のリゾルバ:
Query: {
getAllUsers: (_, __, { dataSources }) => {
return dataSources.userAPI.getAllUsers();
}
}
_
userapi:
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
}
}
_
私のEメールは文字列なので、私が得るエラーは "Stringは値を表すことはできません"です。
リゾルバの中に返されるものは、スキーマで指定された形状と一致する必要があります。ユーザースキーマがある場合
type User {
active: Boolean!
email: String!
fullname: String!
description: String!
tags: [String!]!
}
_
その後、返却したユーザーの配列は次のようになります。
[{
active: true,
email: '[email protected]',
fullname: 'Kaisin Li',
description: 'Test',
tags: ['SOME_TAG']
}]
_
あなたが実際に戻っているデータは非常に異なる形で形作られています:
[{
active: {
BOOL: true
},
description: {
S: 'Test'
},
fullname: {
S: 'Kaisin Li'
},
email: {
S: '[email protected]'
},
}]
_
のどちらか( - === - )のどちらかのマッピングしているアレイの上にマッピングし、結果を正しい形に変換するか、個々の個人にリゾルバを書き込む分野。例えば:
const resolvers = {
User: {
active: (user) => user.active.BOOL,
description: (user) => user.description.S,
// and so on
}
}
_