У меня есть устаревшая БД SQL с таблицами, которые не оптимизированы для Relay Modern, потому что ни одна из таблиц не имеет свойства
ID
Я использую Sequelize в качестве ORM и express-graphql в качестве слоя GraphQl.
Сиквелизировать слой:
const STAFF = sequelize.define('staff', {
sid: {
// set the primary key for the table
primaryKey: true,
type: Sequelize.INTEGER,
autoIncrement: true,
allowNull: false,
unique: true
},
firstName: {
type: Sequelize.STRING,
allowNull: false
}
}
Слой GraphQl:
const StaffType = new GraphQLObjectType({
name: 'Staff',
description: 'This is the GraphQl schema for the staff table',
fields: () => ({
sid: { type: GraphQLInt },
firstName: { type: GraphQLString }
})
})
Как видите, у этой таблицы есть уникальный ключ sid .
Мне интересно, есть ли способ создать псевдонимы для различных уникальных ключей на сервере, чтобы я мог использовать Relay Modern на стороне клиента и писать такие запросы:
{
node(id: "4") {
id
... on Staff {
firstName
}
}
}
Вот как Реле должно сказать о полях:
Поддержка ретрансляции для идентификации объектов основана на сервере GraphQL, предоставляющем идентификаторы объектов стандартным способом. В запросе схема должна предоставлять стандартный механизм запроса объекта по идентификатору. В ответе схема предоставляет стандартный способ предоставления этих идентификаторов.
https://facebook.github.io/relay/graphql/objectidentification.htm