中继边缘被视为相同
Relay edges treated as same
尽管数据不同,但我的一些中继边缘被视为相同。
例如,我想显示推荐电影列表。这些电影是根据用户喜欢的演员推荐的。
我希望我的数据是这样的:
{
"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"
}
}
}
]
}
}
}
但它 return 两个节点的参与者相同。
在我的 resolve() 我 return 一个中继连接。
边是这样生成的:
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
但是当我在 Movie
类型上记录 myActor
字段时,它们都变成 约翰·史密斯.
个人node
缺少一个id
字段,导致所有节点(电影)有一个共同的id值。更新Relay store时,存储两个相同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
}
感谢所有帮助过我的人。
我已经尝试了建议的方法,但无法获得所需的数据集。
所以我采用了这种方法,其中 actorMovie
包含 actor
和 movie
的单独字段:
{
"data": {
"actorMovies": {
"edges": [
{
"node": {
"movie": {
name: "Cool Movie 1",
},
"myActor": {
"name": "John Smith"
}
},
}
]
}
}
}
这消除了重叠 ID 导致意外分组的担忧。
尽管数据不同,但我的一些中继边缘被视为相同。
例如,我想显示推荐电影列表。这些电影是根据用户喜欢的演员推荐的。
我希望我的数据是这样的:
{
"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"
}
}
}
]
}
}
}
但它 return 两个节点的参与者相同。
在我的 resolve() 我 return 一个中继连接。 边是这样生成的:
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
但是当我在 Movie
类型上记录 myActor
字段时,它们都变成 约翰·史密斯.
个人node
缺少一个id
字段,导致所有节点(电影)有一个共同的id值。更新Relay store时,存储两个相同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
}
感谢所有帮助过我的人。
我已经尝试了建议的方法,但无法获得所需的数据集。
所以我采用了这种方法,其中 actorMovie
包含 actor
和 movie
的单独字段:
{
"data": {
"actorMovies": {
"edges": [
{
"node": {
"movie": {
name: "Cool Movie 1",
},
"myActor": {
"name": "John Smith"
}
},
}
]
}
}
}
这消除了重叠 ID 导致意外分组的担忧。