我在中继paginationContainer组件中订阅了新记录。当它从后端检索新记录时,我将其以这种方式(在updater
的{{1}}选项中)插入连接中:
requestSubscription
当我在const newEdge = ConnectionHandler.createEdge(
store,
connection,
newPostNode,
'posts'
)
ConnectionHandler.insertEdgeBefore(connection, newEdge)
中看到新插入的边缘时,它可以正常工作。
但是,正如我期望的那样,这个新插入的边的console.log(props.posts.edges)
参数是cursor
,而它的undefined
参数本身就是记录。
我认为这是不正确的,因为连接中的每个边缘都必须具有node
。
将新边插入中继连接以使其包含cursor
的正确方法是什么?
答案 0 :(得分:0)
每个边缘都必须有一个游标,并且通常应由服务器提供。这意味着订阅或变异返回的节点可能是边缘的一部分,也应提供游标。
有两种主要方法。如果只能以一种方式对连接进行排序(从而保证同一节点始终具有相同的游标),则只需返回整个边类型:
this.autocomplete = new google.maps.places.Autocomplete(this.autocompleteElement.nativeElement,{
componentRestrictions:{'country':'IN'},
types:[]
});
// Bind the map's bounds (viewport) property to the autocomplete object,
// so that the autocomplete requests use the current map bounds for the
// bounds option in the request.
//this.autocomplete.bindTo('bounds', map);
// Set the data fields to return when the user selects a place.
this.autocomplete.setFields(
['address_components', 'geometry.location', 'icon']);
this.autocomplete.addListener('place_changed',()=>{
let place=this.autocomplete.getPlace();
console.log(place);
if (!place.geometry) {
// User entered the name of a Place that was not suggested and
// pressed the Enter key, or the Place Details request failed.
console.log("No details available for input: '" + place.name + "'");
return;
}
})
如果可以用多种方式对连接进行排序(例如,按标题,出版日期,作者),则光标会因排序选项而异,这意味着您无法返回边本身,而可以返回必要的边在客户端更新程序中构建边缘的信息:
type PostEdge {
node: Post!
cursor: String!
}
type MyMutationPayload {
edge: PostEdge!
}
type Mutation {
newPost(input: NewPostInput!): MyMutationPayload!
}