#faunadb
Вопрос:
Допустим, у меня есть строка вроде const fql = "CreateCollection({ name: "users" })"
. Как мне превратить его в faunadb Expr
в JS?
Ответ №1:
Вы сами пришли к правильному ответу. FQL не является языком, основанным на строках. Этот подход позволяет избежать таких проблем, как внедрение SQL, но это означает, что вам нужно где-то создавать запросы с помощью драйвера, консоли или такого инструмента, как миграция схемы фауны (FSM).
const fql = "CreateCollection({ name: "users" })"
Приведенный вами пример склоняется к управлению схемой/ресурсами. Если это ваша реальная потребность здесь, рассмотрите FSM или плагин для бессерверной платформы Fauna.
Если вы создаете интерфейсное приложение с использованием JavaScript, FSM, вероятно, является правильным подходом, поскольку он попадает прямо в ваше приложение. Он также может дать вам дополнительные подсказки о том, как преобразовать строки в FQL. Вы бы сделали это в одном файле FQL, например, fauna/resources/collections/users.fql
как:
CreateCollection({ name: "users" })
Если вы создаете инфраструктуру в виде кода в отдельном конвейере или уже создаете с помощью бессерверной платформы, плагин может подойти лучше.
Если вы хотите увидеть что-то еще, например плагины провайдера Pulumi или Terraform, пожалуйста, отправьте запрос на функцию на форумах!
Комментарии:
1. Спасибо! Мой вариант использования-программно создать экземпляр локальной тестовой базы данных, да. Я думаю, что FSM пока не поддерживает это (это одна из вещей, перечисленных в разделе «потенциальные расширения»). На данный момент у меня есть рабочее решение, просто определяющее мою схему в файле .ts.
2. «программное создание экземпляра локальной тестовой базы данных» —> Проверьте тесты в Fwitter, например, спецификацию >fweet, они написаны на JavaScript, но создают дочерние базы данных из данного ключа. Для «локальной» части — см. Раздел Разработка фауны , вам нужно будет указать
domain
свойство на ваш локальный экземпляр при создании клиента. Смотрите этот пример
Ответ №2:
Единственный способ сделать это на данный момент, по-видимому, заключается в оценке FQL как JavaScript.
Команда eval в оболочке фауны реализована с использованием esprima для анализа FQL как ECMAScript, а затем ее запуска через vm
api узла с помощью escodegen.
Вероятно, проще просто переписать файлы FQL в файлы JS, если у вас есть такая возможность!