尽管数据不同,但我的一些中继边缘被视为相同。
例如,我想显示推荐电影的列表。根据用户喜欢的演员的事实推荐这些电影。
我希望我的数据是这样的:
{
"data": {
"movies": {
"edges": [
{
"node": {
"name": "Cool Movie 1",
"myActor": {
"name": "John Smith"
}
},
"node": {
"name": "Cool Movie 1", <- Same as movie above, different actor
"myActor": {
"name": "Mary Smith"
}
}
}
]
}
}
}
然而,它为两个节点返回相同的actor。
在我的 resolve()中,我返回一个中继连接。 边的生成如下:
let edges = movieIdAndActorIdPairs.map(({movieId, actorId}) => ({
cursor: //,
node: async () => {
const dataRequirements = [getMovie(movieId), getActor(actorId)]
let [movie, actor] = await Promise.all(dataRequirements)
movie.myActor = actor
return movie
}
}))
当我记录edges
时,它会显示正确的myActor
,但当我在myActor
类型上记录Movie
字段时,它们都会成为 John Smith < / em>的
答案 0 :(得分:0)
个人node
缺少id
字段,这会导致所有节点(电影)的公共ID值。更新中继存储时,它会存储两个具有相同ID和相同内容的节点。
在此处设置每个节点的ID:
node: async () => {
const dataRequirements = [getMovie(movieId), getActor(actorId)]
let [movie, actor] = await Promise.all(dataRequirements)
movie.myActor = actor
movie.id = movieId + actorId;
return movie
}
答案 1 :(得分:0)
感谢所有帮助过我的人。
我已尝试过建议的方法,但无法获得所需的数据集。
所以我采用这种方法,actorMovie
包含actor
和movie
的单独字段:
{
"data": {
"actorMovies": {
"edges": [
{
"node": {
"movie": {
name: "Cool Movie 1",
},
"myActor": {
"name": "John Smith"
}
},
}
]
}
}
}
这消除了重叠ID导致无意分组的担忧。