首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >动物群:从纯JS中选择

动物群:从纯JS中选择
EN

Stack Overflow用户
提问于 2022-01-11 00:01:15
回答 1查看 155关注 0票数 0

我对在只读模式下使用纯JS浏览器中的动物群感兴趣。要么是官方文件缺乏可以理解的信息,要么是我弄不清楚。请帮我理解一下。

我试图运行这样的查询:

代码语言:javascript
运行
复制
Map(Paginate(Documents(Collection('spells'))), Lambda('x', Get(Var('x'))));

从shell运行此查询将给出结果。

我想把这个查询推送到JavaScript变量。但我不知道该怎么办。这是我的代码:

代码语言:javascript
运行
复制
var client = new faunadb.Client({
  secret: '320438826900127936',
  keepAlive: false,
  domain: 'db.eu.fauna.com',
  // NOTE: Use the correct domain for your database's Region Group.
  port: 443,
  scheme: 'https',
});

var helper = client.paginate(
  q.Match(
    q.Index('spells'),
    '101'
  )
)

paginate.then(function(response) {
  console.log(response.ref) // Would log the ref to console.
})

请帮助我使用纯JavaScript从DB获得输出。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-11 00:56:39

使用JavaScript驱动程序,所有的FQL函数都在faunadb.query命名空间中。通常,开发人员会在脚本顶部执行此操作:

代码语言:javascript
运行
复制
const faunadb = require('faunadb')
const q = faunadb.query

之后,可以使用q对象访问FQL函数。例如:q.Add(1, 2)

否则,可以使用析构将FQL函数导入脚本的命名空间,如下所示:

代码语言:javascript
运行
复制
const faunadb = require('faunadb')
const {
  Documents,
  Collection,
  Get,
  Index,
  Lambda,
  Match,
  Paginate
} = faunadb.query

然后您可以“直接”调用FQL函数,例如Add(1, 2)

如果使用析构,请确保导入您打算在查询中使用的所有FQL函数。并不是所有的FQL函数都可以“按原样”导入,因为它们的一些名称将与内置的JavaScript名称(如Function )发生冲突。对于这些,您必须直接分配它们:

代码语言:javascript
运行
复制
const FaunaFunction = faunadb.query.Function

然后在组合查询时使用您指定的本地名称(本例中为FaunaFunction)。

无论哪种方式,在调用client.query()之前,查询本身都不会发送给Fauna,或者在您的示例中,调用client.paginate()函数。

这意味着您可以将FQL函数调用分配给JavaScript变量。对于所需的查询,可以如下所示:

代码语言:javascript
运行
复制
const spellsQuery = q.Map(
  q.Paginate(
    q.Documents(q.Collection('spells'))
  ),
  q.Lambda('x', q.Get(q.Var('x')))
)

然后你就可以这样做:

代码语言:javascript
运行
复制
client.query(spellsQuery)
.then(res => console.log(res))

如果只执行分页操作,则可以使用client.paginate。所需的查询调用Map,因此client.pagination助手会妨碍您。我的例子使用client.query

注意,在配置客户端连接对象时,不需要指定portscheme选项;您已经使用了默认值。而且您可能不应该更改keepAlive选项,除非您的工作流特别需要它。

另外,我看到你在你的例子中没有包含一个真正的秘密,这是一件好事:如果你确实包含了一个真正的秘密,任何有这个秘密的人都可以像你一样访问你的数据库。

如果您希望看到运行在网页中的完整(但简单的)基于动物群的应用程序,请参阅:https://github.com/fauna-labs/todo-vanillajs

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70660220

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档