【发布时间】:2020-11-18 00:11:08
【问题描述】:
对于我的应用程序中的用户,我有一个类似这样的简单架构:
type Query {
users: [User!]!
}
# The User ObjectType and Sequelize model.
type User implements UserI {
id: ID!
userName: String!
firstName: String!
lastName: String!
email: String!
createdAt: DateTime!
updatedAt: DateTime!
deletedAt: DateTime!
}
我的type-graphql 解析器实现了这个简单的代码来返回users 的列表:
@Resolver()
class UserResolver {
@Query(() => [User])
async users(): Promise<User[]> {
return User.findAll();
}
}
当我执行这样的查询时:
{
users {
firstName
}
}
我预计等效的 MySQL 查询会是这样的:SELECT firstName FROM users,但我可以看到 Sequelize 将查询记录为:
Executing (default): SELECT `id`, `userName`, `firstName`, `lastName`, `email`, `password`, `createdAt`, `updatedAt` FROM `users` AS `User` WHERE (`User`.`deletedAt` IS NULL);
现在,虽然一切正常(我可以在客户端获取所有用户及其数据),但我想知道如果 Sequelize 执行完整的属性选择,是否会对服务器端的性能造成影响?这是由于 Sequelize 还是仅仅由于 GraphQL 如何解析模型字段?我错过了一些选项吗?
【问题讨论】:
标签: mysql express graphql sequelize.js typegraphql