我对在只读模式下使用纯JS浏览器中的动物群感兴趣。要么是官方文件缺乏可以理解的信息,要么是我弄不清楚。请帮我理解一下。
我试图运行这样的查询:
Map(Paginate(Documents(Collection('spells'))), Lambda('x', Get(Var('x'))));
从shell运行此查询将给出结果。
我想把这个查询推送到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获得输出。
发布于 2022-01-10 16:56:39
使用JavaScript驱动程序,所有的FQL函数都在faunadb.query
命名空间中。通常,开发人员会在脚本顶部执行此操作:
const faunadb = require('faunadb')
const q = faunadb.query
之后,可以使用q
对象访问FQL函数。例如:q.Add(1, 2)
。
否则,可以使用析构将FQL函数导入脚本的命名空间,如下所示:
const faunadb = require('faunadb')
const {
Documents,
Collection,
Get,
Index,
Lambda,
Match,
Paginate
} = faunadb.query
然后您可以“直接”调用FQL函数,例如Add(1, 2)
。
如果使用析构,请确保导入您打算在查询中使用的所有FQL函数。并不是所有的FQL函数都可以“按原样”导入,因为它们的一些名称将与内置的JavaScript名称(如Function
)发生冲突。对于这些,您必须直接分配它们:
const FaunaFunction = faunadb.query.Function
然后在组合查询时使用您指定的本地名称(本例中为FaunaFunction
)。
无论哪种方式,在调用client.query()
之前,查询本身都不会发送给Fauna,或者在您的示例中,调用client.paginate()
函数。
这意味着您可以将FQL函数调用分配给JavaScript变量。对于所需的查询,可以如下所示:
const spellsQuery = q.Map(
q.Paginate(
q.Documents(q.Collection('spells'))
),
q.Lambda('x', q.Get(q.Var('x')))
)
然后你就可以这样做:
client.query(spellsQuery)
.then(res => console.log(res))
如果只执行分页操作,则可以使用client.paginate
。所需的查询调用Map
,因此client.pagination
助手会妨碍您。我的例子使用client.query
。
注意,在配置客户端连接对象时,不需要指定port
和scheme
选项;您已经使用了默认值。而且您可能不应该更改keepAlive
选项,除非您的工作流特别需要它。
另外,我看到你在你的例子中没有包含一个真正的秘密,这是一件好事:如果你确实包含了一个真正的秘密,任何有这个秘密的人都可以像你一样访问你的数据库。
如果您希望看到运行在网页中的完整(但简单的)基于动物群的应用程序,请参阅:https://github.com/fauna-labs/todo-vanillajs。
https://stackoverflow.com/questions/70660220
复制相似问题