На нашем веб-сайте, над которым я работаю, мы используем GraphQL для передачи информации из бэкэнда во внешний интерфейс и наоборот. Большая часть существующего кода является устаревшим кодом, поэтому я сам не написал его, но я искал, пытаясь собрать воедино, как создать этот новый объект, который я хочу создать.
Мы пытаемся составить частотно-частотную таблицу из наших результатов для ретрансляции во внешний интерфейс для автозаполнения. Так что, в основном, это просто огромная таблица слов. Этот hashmap уже создан и работает, но теперь у меня проблемы с подключением к GraphQL.
Это то, что я имею до сих пор:
module Types
class AutoSuggestType < Types::BaseObject
description "A list of suggested words"
field :words, [SuggestionType], "List of autosuggested words", null: false
def words
autosuggest = AutosuggestService.new
autosuggest.suggestions
end
end
end
module Types
class SuggestionType < Types::BaseObject
description "A suggestion"
field :word, String, "Word", null: false
field :frequency, Integer, "Word count of the word", null: false
end
end
require 'autosuggest'
class AutosuggestService
def initialize
# we might have to limit this to prefix matched words because right now we're just sending all the data to
# the front end
top_queries = Hash[WordFrequency.pluck(:name, :frequency)]
@autosuggest = Autosuggest.new(top_queries)
end
def words
result = []
@autosuggest.suggestions.each do |suggestion|
unless suggestion.nil?
result.push Hash[suggestion[:query], suggestion[:score]]
end
end
result
end
end
end
По сути, всякий раз, когда я запускаю соответствующую команду GraphQL, он говорит, что возвращает нулевой объект. Но объекты создаются должным образом, я думаю, потому что, когда я делаю puts
, он показывает правильные вещи.
Не похоже, что с другими сервисами в этом проекте они создаются явно. Но это намного проще, поэтому я не знаю.
Каков наилучший способ сделать это в целом? Если моя текущая идея в порядке, как мне сделать создание массива?
Редактировать: я пытался сделать что-то вроде этого безрезультатно:
result.push [Hash[:word, suggestion[:query]], Hash[:frequency, suggestion[:score]]]
Есть ли причина, по которой переход от ActiveRecord к GraphQL безболезнен, но это почти невозможно? Я не знаю, что случилось.