动物群:Select 来自纯 JS
Fauna: Select from pure JS
我有兴趣在只读模式下从纯 JS 的浏览器中使用 Fauna。
要么官方文档缺乏这种情况下可以理解的信息,要么我无法弄清楚。
请帮助我理解。
我正在尝试 运行 这样的查询:
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 从数据库中获取输出。
使用 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()
或您的情况 client.paginate()
函数被调用后,查询本身才会发送到 Fauna。
这意味着您可以将 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
我有兴趣在只读模式下从纯 JS 的浏览器中使用 Fauna。 要么官方文档缺乏这种情况下可以理解的信息,要么我无法弄清楚。 请帮助我理解。
我正在尝试 运行 这样的查询:
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 从数据库中获取输出。
使用 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()
或您的情况 client.paginate()
函数被调用后,查询本身才会发送到 Fauna。
这意味着您可以将 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