【发布时间】:2018-06-01 03:26:02
【问题描述】:
我正在使用以下方式构建应用程序:
- MySQL 作为后端数据库
- Apollo GraphQL 服务器作为该数据库的查询层
- Sequelize 作为 GraphQL 和 MySQL 之间的 ORM 层
在构建 GraphQL 架构时,我使用 GraphQL ID 数据类型来唯一标识记录。这是一个示例模式及其 MySQL 解析器/连接器
Graphql 类型:
type Person {
id: ID!
firstName: String
middleName: String
lastName: String
createdAt: String
updatedAt: String
}
续集连接器
export const Person = sequelize.define('person', {
firstName: { type: Sequelize.STRING },
middleName: { type: Sequelize.STRING },
lastName: { type: Sequelize.STRING },
});
GraphQL 解析器:
Query: {
person(_, args) {
return Person.findById(args.id);
}
所以一切正常。这是我的问题。 GraphQL 似乎将ID 类型视为字符串。虽然 ID 值通过 Sequelize 以 INT 的形式存储在 MySQL 数据库中。我可以使用 GraphQL 使用与数据库中的 ID 值匹配的字符串或整数来查询 MySQL 数据库。但是,GraphQL 将始终将 ID 值作为字符串返回。
我应该如何在客户端处理这个值?从 GraphQL 获取它后,我是否应该始终将其转换为整数?我应该修改我的续集代码以将 ID 值存储为字符串吗?像这样使用 GraphQL ID 时有正确的方法吗?
【问题讨论】:
标签: mysql sequelize.js graphql apollo