gpt4 book ai didi

postgresql - 相关数据未从 Apollo 返回给客户端?

转载 作者:行者123 更新时间:2023-12-03 22:41:24 24 4
gpt4 key购买 nike

这是相关的阿波罗代码。 (许多数据库字段已被省略,以便更快/更轻松地阅读这篇文章。)

连接器

const userAccountsDataModel = db.define('userAccountsData', {
id: {type: Sequelize.STRING, primaryKey: true},
picture_medium: {type: Sequelize.STRING}
});


const associatesDataModel = db.define('associatesData', {
_id: {type: Sequelize.STRING, primaryKey: true},
first_name: {type: Sequelize.STRING},
last_name: {type: Sequelize.STRING},
userID: {type: Sequelize.STRING},
});

associatesDataModel.belongsTo(userAccountsDataModel, {foreignKey: 'userID'});

架构
type userAccountsData {
id: String
picture_medium: String
}

type associatesData {
_id: String
first_name: String
last_name: String
userID: String
userAccountsData: [userAccountsData]
}

查询
const GETONEASSOCIATE_QUERY = gql`
query getOneAssociate($_id: String!) {
getOneAssociate(_id: $_id) {
_id
first_name
last_name
userID
accountsData{
id
picture_medium
}
}
} `;

解析器
getOneAssociate(_, args)  {
console.log('in getOneAssociate');
var ret = connectors.associatesData.findAll({
where: args,
include: [connectors.userAccountsData],
logging: console.log
}).then((res) => res.map((item) => item.dataValues));

return ret;
},

通过 Sequelize,解析器生成以下 SQL:
SELECT "associatesData"."_id", 
"associatesData"."first_name",
"associatesData"."last_name",
"associatesData"."userID",
"userAccountsDatum"."id" AS "userAccountsDatum.id",
"userAccountsDatum"."picture_medium" AS "userAccountsDatum.picture_medium"
FROM "associatesDatas" AS "associatesData"
LEFT OUTER JOIN "userAccountsData" AS "userAccountsDatum"
ON "associatesData"."userID" = "userAccountsDatum"."id"
WHERE "associatesData"."_id" = '35';

当我在我的 SQL 客户端中运行上述 SQL 时,我可以看到所有寻求的数据都被返回,包括来自相关“userAccountsData”表的数据。

但是,当数据到达我在 javascript 浏览器中运行的客户端代码时,相关表中的数据丢失了——应该包含它的对象为空。

我错过了什么?

在此先感谢大家提供任何信息!

最佳答案

结果证明这是 Sequelize 自动将表名复数化的一个异常现象。

默认情况下,Sequelize 自动将表名复数化。应该可以通过使用 Sequelize 的 freezeTableName 属性来关闭此行为。但是,根据 this Sequelize issue post ,在某些情况下,Sequelize 会忽略 freezeTableName 属性并无论如何将表名复数化(有时是单数化)。

发现这一点后,我能够通过将相关表名复数化并通过我所有的 Apollo 代码来更新对该表的引用,以便它们也被复数化来解决异常。

关于postgresql - 相关数据未从 Apollo 返回给客户端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44349707/

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