在嵌套对象中读取嵌套对象
Posted
技术标签:
【中文标题】在嵌套对象中读取嵌套对象【英文标题】:Reading the nested object in the nested object 【发布时间】: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 做了一个简单的选择,一切正常。一旦嵌套在其他对象中,问题就会出现。
【参考方案1】:
解决方案:
返回值中的垃圾 ID 是由嵌套实体中的填充无效引起的。我设法解决问题的方式:
const allMappings = () =>
Mapping.find()
.populate('user')
.populate('ctSegment')
.populate(
path: 'partnerSegment',
populate:
path: 'partner'
)
.exec();
【讨论】:
以上是关于在嵌套对象中读取嵌套对象的主要内容,如果未能解决你的问题,请参考以下文章