我现在正在为GraphQL API设置解析器,并遇到关于sequelize中的findAll()函数的一些问题/问题。
我有以下两个解析器:
User: async (parent, { id }, { models }) => {
return await models.User.findAll({
where: {
ID_User: id
}
});
}
UserPK: async (parent, { id }, { models }) => {
return await models.User.findByPk(id);
}
型号:
type Query {
UserPK(id: ID): User
User(id: ID): User
}
type User {
ID_User: ID,
Username: String,
}
如果我现在运行这些查询
{
UserPK(id: 1) {
ID_User
Username
}
User(id: 1) {
ID_User
Username
}
}
只有UserPK返回(正确)数据,对于每个字段,User查询都返回null,这使我感到困惑,因为sequelize执行的查询完全相同。
Executing (default): SELECT `ID_User`, `Username` FROM `User` AS `User` WHERE `User`.`ID_User` = '1';
Executing (default): SELECT `ID_User`, `Username` FROM `User` AS `User` WHERE `User`.`ID_User` = '1';
如果这有任何区别,我正在使用apollo服务器。
答案 0 :(得分:2)
findByPk
和findAll
之间的区别在于findByPk
已经返回了一个元素,而findAll
返回了array。您似乎没有考虑到这一点。之后,User
的解析器收到一个数组,他们无法从中读取属性。
return (await models.User.findAll({
where: {
ID_User: id
}
}))[0];