【发布时间】:2018-10-12 00:15:56
【问题描述】:
我的问题是读取嵌套对象的属性,它位于其他嵌套对象中。
GraphQL
type Mapping {
id: ID!
partnerSegmentId: ID!
ctSegmentId: CtSegment!
}
type PartnerSegment {
id: ID!
name: String!
platformId: Int!
partner: Partner!
}
type Partner {
id: ID!
name: String!
}
一旦我尝试像这样查询它:
{
allMappings {
partnerSegmentId {
id
name
partner {
id
}
}
}
}
我收到:
{
"data": {
"allMappings": [
null
]
},
"errors": [
{
"message": "Cannot return null for non-nullable field Partner.name.",
"locations": [
{
"line": 8,
"column": 9
}
],
"path": [
"allMappings",
0,
"partnerSegmentId",
"partner",
"name"
]
}
]
}
映射架构
const mappingSchema = new mongoose.Schema(
{
partnerSegmentId: {
type: mongoose.Schema.Types.ObjectId,
ref: 'PartnerSegment',
required: [true, 'Mapping must have partner segment id.']
},
ctSegmentId: {
type: mongoose.Schema.Types.ObjectId,
ref: 'CtSegment',
required: [true, 'Mapping must have CT segment id.']
}
},
{ timestamps: true }
);
我尝试分别阅读 Partner、PartnerSegment 和 Mapping 模型。一切正常。知道我应该在哪里搜索问题的根源吗?我检查了 mongodb 文档,ids 看起来还不错。我想这是我的模型的错。
如果您想仔细查看,请拨打project repo。
【问题讨论】:
-
您是否检查过为
PartnerSegment .Name返回了哪些数据?看起来Name是null。 -
@kat1330 我将对象 ID 保存在数据库中。如果一切正常,我直接在数据库中检查并且我没有看到错误。此外,我通过这个 id 做了一个简单的选择,一切正常。一旦嵌套在其他对象中,问题就会出现。
标签: javascript node.js mongodb mongoose graphql