Ich begann mit der relay-starter-kit
und arbeitete sich auch durch die Relay und GraphQL Dokumentation. Aber es gibt einige Bereiche, die unerklärt und geheimnisvoll sind.In Relay, welche Rolle spielen die Knotenschnittstelle und die globale ID-Spezifikation?
Ernst las ich eine Menge Dokumentationen überall über all diese Dinge, aber konnte keine befriedigende Erklärungen für die folgenden Fragen nicht finden:
Was ist das? Ich setze Protokollierung, aber es wird nie überhaupt genannt:
var {nodeInterface, nodeField} = nodeDefinitions(
(globalId) => {
var {type, id} = fromGlobalId(globalId);
if (type === 'User') {
return getUser(id);
} else if (type === 'Widget') {
return getWidget(id);
} else {
return null;
}
},
(obj) => {
if (obj instanceof User) {
return userType;
} else if (obj instanceof Widget) {
return widgetType;
} else {
return null;
}
}
);
Und was ist die tatsächliche Wirkung dieser:
interfaces: [nodeInterface],
Vielleicht, dass im Zusammenhang, was bedeutet das node
Feld hier tun:
var queryType = new GraphQLObjectType({
name: 'Query',
fields:() => ({
node: nodeField,
// Add your own root fields here
viewer: {
type: userType,
resolve:() => getViewer(),
},
}),
});
Und was ist die Magie um das Feld id
? Was ist globalIdField
für?
Ich habe eine id
in meiner Datenbank und dachte, dass ich es in meinem GraphQL Objekte verwenden:
Statt:
id: globalIdField('User'),
ich meine Datenbank-ID verwenden möchten:
id: {
type: GraphQLID,
description: 'The identifier'
},
Aber wenn ich das tue, erhalte ich einen Fehler im Browser, der RelayQueryWriter: Could not find a type name for record '1'
sagt.
Ich kann diesen Fehler loswerden, indem ich __typename
zu meinem Component Container Relay Query hinzufügen, aber das scheint alles falsch.
Es wäre großartig, wenn Sie hier ein paar tiefere Einblicke und eine bessere Erklärung geben und die offizielle Dokumentation verbessern könnten.
Danke
Hoffentlich wird seinen Weg in das Tutorial bald machen. Ich war auch eine ganze Weile verwirrt, bis ich schließlich alles durchgearbeitet und die Teile zusammengesetzt habe. –
Vielleicht fügen Sie ein bisschen mehr zu dieser Antwort in Bezug auf 'fromGlobalId' und' toGlobalId' hinzu? und wie erleichtern sie das Umkrempeln eines beliebigen Objekttyps? Das Lesen von https://github.com/graphql/graphql-relay-js/blob/master/src/node/node.js und anderer Dateien in diesem Repo hat mir sehr geholfen, aber dieses Zeug in Worte zu fassen, hätte mir viel erspart von Zeit. –
Für eine kurze (Sie können bis zum Ende für die Zusammenfassung zu überspringen) & Code-illustrierte Erklärung, was die mysteriösen nodeInterface, nodeField, globalFieldId sind, vielleicht https://medium.com/p/relay-graphql-de-mystifying- node-id-38757121b9c – nethsix