使用gqlgen的Graphql连接解析器

I'm working on implementing the graphql connection spec using gqlgen for a graphql API and was a bit confused about the best practice for properly resolving edges and nodes.

In the official starwars gqlgen example, they already have IDs of connection objects embedded in the parent object. If my parent object could have thousands of child objects to resolve via a connection, I would want to make the query by parent object id Character and cursor paginate the results to match the connection standard.

type CharacterFields struct {
    ID        string
    Name      string
    FriendIds []string
    AppearsIn []Episode
}

type FriendsConnection struct {
    Ids  []string
    From int
    To   int
}

When resolving a connection, should I be paginating and returning related 1-many or many-many id array and using dataloader to batch load the resolved ids? To use dataloader I end up doing two queries: one that returns the friends ids and the cursor pagination information, and one that resolves the Charaters IN () through dataloader from the edges resolver rather than using the objects returned from the first query that could have returned the whole object rather than just the id from the database.

Should connections be utilizing data-loader and separate the pagination request and pass an array of ids to a resolver that resolves Characters IN () or am I approaching this the wrong way?