在 Appsync 中,如果使用 RDS SQL 数据源时,直接返回的数据格式可能并不是 JSON 格式。如果需要返回 JSON 格式的数据,可以通过在 schema 中定义返回数据类型来实现。
例如,假设我们有一个查询操作,希望返回一些用户信息。原始的定义可能是这样的:
type Query {
getUsers: [User]
}
但是,如果直接使用 RDS SQL 数据源来查询用户信息,返回的数据格式可能类似于以下格式:
[{"name": "张三", "age": 20}, {"name": "李四", "age": 30}]
为了将其转换为 JSON 格式,可以通过在 schema 中进行定义,指定每个字段的类型及其 JSON 转换方法。例如,对于上述示例,可以将 schema 改为:
type Query {
getUsers: [UserJson]
}
type UserJson {
name: String
age: Int
}
extend type User {
toJSON: UserJson
}
extend type UserConnection {
items: [UserJson]
}
其中,我们新增了一个名为 UserJson 的类型,用于指定 JSON 格式的数据类型,并且为 User 类型和 UserConnection 类型添加了 toJSON 方法,用于将原始返回值转换为 JSON 格式。对应的解析代码可以如下实现:
const resolvers = {
User: {
toJSON: (root) => ({
name: root.name,
age: root.age,
}),
},
UserConnection: {
items: (root) => root.items.map((user) => user.toJSON()),
},
};
经过这样的定义和实现,查询 getUsers 返回的数据就会是 JSON 格式了。