reactjs - 无法为具有 GraphQl 和 TypeORM 的不可空字段 Message.sender 返回 null
问题描述
所以我试图弄清楚为什么我的查询最终会出现:
{
"errors": [
{
"message": "Cannot return null for non-nullable field Message.sender.",
}
...
}
这是我的实体
@Entity()
export class Message extends BaseEntity {
@PrimaryGeneratedColumn("uuid")
id: string;
@Column("text")
content: string;
@CreateDateColumn()
created_at: string;
// @ts-ignore
@ManyToOne(type => User, user => user.messages)
sender: User;
}
还有我的解析器:
allMessagesOfProject: async (_, { projectId }, __) => {
const project = await Project.findOne({
relations: ["messages"],
where: { id: projectId }
});
if (project) {
const messages = project.messages;
return messages.reverse();
}
return null;
},
我错过了什么 ?
解决方案
好的,我刚刚发现 TypeORM 添加了一层安全性,如果不精确则不允许访问子级,因此您必须使用该eager
选项。
@ManyToOne(type => User, user => user.messages, {eager: true})
sender: User;
希望这对以后的人有所帮助。
推荐阅读
- c++ - OpenCV VideoReader 问题“函数‘nextFrame’中不支持的视频源(FPGA 和 PC 之间的同步问题)”
- python - 获取笔记本点击事件而不是选中的事件
- javascript - 你能有一个 Express API 并使用 React Router Dom 吗?
- java - 如何从 Java TreeMap 中的给定键迭代
- r - 如何在 ggplot2 的单个图中同时使用堆栈和闪避
- postgresql - 在 Postgres 中意外创建重复的唯一约束
- bash - 启动 MySQL 服务器 > 将输出通过管道传输到文件
- java - gRPC 中服务器 IP 的解析
- php - 在 WooCommerce 中获取订单总额计算的订单费用和折扣金额
- azure-devops - 使用 Azure 数据工厂禁用 Azure Devops 版本的自动触发