gpt4 book ai didi

node.js - 带有 where 参数的 Sequelize findAll() 返回 null,而 findByPk() 返回正确的数据

转载 作者:太空宇宙 更新时间:2023-11-03 23:14:37 24 4
gpt4 key购买 nike

我现在正在为 GraphQL API 设置解析器,并遇到了一些有关 Sequelize 中的 findAll() 函数的问题。

我有这 2 个解析器:

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,这让我很困惑,因为后续执行的查询完全相同。

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 服务器,如果这有什么区别的话。

最佳答案

findByPkfindAll 之间的区别在于 findByPk 返回单个元素,而 findAll 返回数组。你似乎没有考虑到这一点。之后,User 的解析器收到一个无法从中读取属性的数组。

return (await models.User.findAll({
where: {
ID_User: id
}
}))[0];

关于node.js - 带有 where 参数的 Sequelize findAll() 返回 null,而 findByPk() 返回正确的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56985226/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com