Можно ли сравнить функцию существующего индекса с обычной встроенной функцией в JavaScript?
Например, я мог бы создать индекс со следующим кодом:
r.table('Table').indexCreate('index', document => document.hasFields('field'));
Позже я мог бы захотеть определить, выполняет ли индекс ту же функцию:
document => document.hasFields('field')
Используя indexStatus()
, два свойства могут помочь с этим.
Во-первых, function
- это Buffer
, представляющий функцию, и его можно сравнить с Buffer
s, полученными из других indexStatus()
объектов. Однако не ясно, как это можно сравнить с нативной функцией JavaScript. Можно создать новый индекс, а затем Buffer
по сравнению с Buffer
существующего индекса, но это будет грязный и влияющий на производительность обходной путь.
Во-вторых, query
- это string
, содержащий функцию, напоминающую ту, которая была предоставлена indexCreate()
. Однако это свойство кажется недокументированным, и значение не всегда точно совпадает с функцией, предоставленной для indexCreate()
, с изменениями имен переменных и преобразованием функций стрелок в выражения функций. Я написал грубый код, который пытается работать с этим подходом, хотя он несовершенен, учитывая непрозрачную природу правил, по которой значение query
генерируется RethinkDB.