【发布时间】:2021-12-02 10:52:48
【问题描述】:
假设我有一个类似const fql = "CreateCollection({ name: "users" })" 的字符串。如何在 JS 中把它变成一个区系数据库Expr?
【问题讨论】:
标签: faunadb
假设我有一个类似const fql = "CreateCollection({ name: "users" })" 的字符串。如何在 JS 中把它变成一个区系数据库Expr?
【问题讨论】:
标签: faunadb
您自己找到了正确答案。 FQL 不是基于字符串的语言。这种方法可以避免 SQL 注入等问题,但它确实意味着您需要使用驱动程序、控制台或 Fauna Schema Migrate (FSM) 等工具在somewhere 编写查询。
const fql = "CreateCollection({ name: "users" })"
您给出的示例倾向于架构/资源管理。如果这是您的实际需求,请考虑 FSM 或 Fauna Serverless Framework plugin。
如果您正在使用 JavaScript 构建前端应用程序,FSM 可能是正确的方法,因为它直接嵌入到您的应用程序中。 它还可能为您提供有关如何将字符串转换为 FQL 的更多提示。您可以在单个 FQL 文件中执行上述操作,例如,fauna/resources/collections/users.fql:
CreateCollection({ name: "users" })
如果您将基础架构作为代码在单独的管道中进行,或者已经在使用 Serverless Framework 进行构建,则该插件可能更适合。
如果您想查看 Pulumi 或 Terraform provider plugins 之类的其他内容,请在论坛中提交 feature request!
【讨论】:
domain 属性指向本地实例。见this example
目前这样做的唯一方法似乎是将 FQL 评估为 JavaScript。
动物外壳eval command 是使用 esprima 实现的,将 FQL 解析为 ECMAScript,然后通过节点的 vm api 和 escodegen 运行它。
如果您可以选择,将 FQL 文件重写为 JS 文件可能会更容易!
【讨论】: