Некоторые из моих релейных ребер обрабатываются одинаково, несмотря на то, что они являются разными данными.Края релей, обработанные как те же
Например, я хочу показать список рекомендуемых фильмов. Эти фильмы рекомендуются на основе того факта, что есть актер, которого любит пользователь.
Я ожидаю, что мои данные, чтобы быть как это:
{
"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"
}
}
}
]
}
}
}
Но она возвращает тот же актер, как для узла.
В моем решении () Я возвращаю релейное соединение. В края генерируются так:
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.
Вы проверили, что вы получаете ожидаемое значение для 'actor' * внутри * вашего цикла? (т. е. на сервере, а не на клиенте) – wincent
@wincent Да, я 'console.log' прямо под Promise, а также в методе resolver для поля 'myActor' в моем типе 'Movie', который где код продолжается сразу после возвращения. –
У обоих узлов есть один и тот же идентификатор? выглядит как – marktani