Попробуйте это,
// Define Schemas
var schema = buildSchema(`
type Query {
getUser: User
getSocialMedia: SOCIALMEDIA
}
type User {
firstName: String
lastName: String
email: String
socialMedia: SOCIALMEDIA
}
type SOCIALMEDIA {
facebook: String
instagram: String
twitter: String
}
`);
// Define resolver functions
var root = {
getUser: {
firstName: () => 'John',
lastName: () => 'Doe',
email: () => 'John.Doe@gmail.com',
socialMedia: {
facebook: () => 'John Doe Facebook',
instagram: () => 'John Doe Instagram',
twitter: () => 'John Doe Twitter'
}
},
getSocialMedia: {
facebook: () => 'John Doe Facebook',
instagram: () => 'John Doe Instagram',
twitter: () => 'John Doe Twitter'
}
};
Вы на правильном пути с двумя столбцами, но я предложил бы хранить весь визуализуемый заголовок в одном столбце, вместо того, чтобы связать столбцы. Другой столбец используется просто для сортировки. Это дает Вам полную гибкость по сортировке и дисплею, вместо того, чтобы застрять с простым префиксом.
Это - довольно общий подход при поиске (который связан с сортировкой). Один столбец (с индексом) свернут случаем, de-punctuated, и т.д. В Вашем случае Вы также применили бы грамматическую конвенцию удаления передовиц к значениям в этом поле. Этот столбец затем используется в качестве ключа сравнения для поиска или сортировки. Другой столбец не индексируется и сохраняет исходный ключ для дисплея.
Сохраните заголовок в двух полях: ПРЕФИКС ЗАГОЛОВКА и ТЕКСТ ЗАГОЛОВКА (или некоторые такой). Затем вид на втором, но дисплей конкатенация этих двух, с пространством между.
Мое собственное решение проблемы состояло в том, чтобы создать три столбца в базе данных.
article varchar(4)
sorttitle varchar(255)
title computed (article + sortitle)
"статья" только будет любой, "A" (отметьте конечный пробел на каждом), или пустая строка (не пустой)
"sorttitle" будет заголовком с удаленной передовицей.
Таким образом, я могу отсортировать на SORTTITLE и отобразить ЗАГОЛОВОК. Существует мало фактической обработки, идущей на вычисленное поле (таким образом, это быстро), и существует только немного работы, которая будет сделана при вставке.
Я соглашаюсь с doofledorfer, но я рекомендовал бы хранить пробелы, вводимые как часть префикса вместо того, чтобы предположить, что это - одиночный пробел. Это дает Вашим пользователям больше гибкости. Можно также смочь сделать некоторую конкатенацию в запросе самом, таким образом, Вы не должны объединять поля как часть Вашей бизнес-логики.
Я не знаю, может ли это быть сделано в SQL Server. Если можно создать основанные на функции индексы, Вы могли бы создать тот, который делает regex на поле, или это использует Вашу собственную функцию. Это заняло бы меньше места, чем дополнительное поле, будет усовершенствовано самой базой данных и позволяет полному заголовку быть сохраненным вместе.