dbg()
Output a debug message in the query summary and return the message in the query results.
Description
The dbg()
(debug) method outputs a provided message in the
summary of query responses and
returns the message in the query result. In the summary, debug messages are
annotated as info
.
dbg()
and log()
You can use dbg()
inline within method calls
for debugging.
Debug message template
The debug message template is:
info: <message>
at *<source>*:<line>:<column>
|
<line> | dbg(<message>)
| ^^^^^^^^^^^
|
where:
Field | Description | ||||||
---|---|---|---|---|---|---|---|
|
Message source.
|
||||||
|
Line number where |
||||||
|
Character offset in |
||||||
|
String-serialized |
Debug messages for UDF calls
When calling a user-defined
function (UDF) that uses dbg()
, the
visibility of debug messages depends on the
authentication secret's role:
Role | Visibility |
---|---|
Messages are returned in the response’s
|
|
Messages are not returned, even if the UDF is annotated with
|
Parameters
Parameter | Type | Required | Description |
---|---|---|---|
|
true |
Value to output to the query summary and query results. |
Examples
Basic example
The following FQL query uses
dbg()
within a
collection.create()
call:
let x = "key limes"
Product.create(
// `dbg()` outputs its message. In this case,
// it outputs a struct containing the `name`
// and `stock` properties.
dbg({
name: "#{x}",
stock: 1 + 2 + 3,
})
)
The query as a Query endpoint request:
curl -X POST \
'https://db.fauna.com/query/1' \
-H 'Authorization: Bearer <FAUNA_SECRET>' \
-H 'Content-Type: application/json' \
-H 'X-Format: tagged' \
-d '{
"query": "let x = \"key limes\"\n\nProduct.create(\n dbg({\n name: \"#{x}\",\n stock: 1 + 2 + 3,\n })\n)"
}'
The message is included in the query results in data
. The summary
includes
the query lines that called dbg()
:
{
"data": {
"@doc": {
"id": "413921254218661965",
"coll": {
"@mod": "Product"
},
"ts": {
"@time": "2099-11-07T18:41:59.173Z"
},
"name": "key limes",
"stock": {
"@int": "6"
}
}
},
"static_type": "Product",
"summary": "info: { name: \"key limes\", stock: 6 }\nat *query*:4:6\n |\n4 | dbg({\n | ______^\n5 | | name: \"#{x}\",\n6 | | stock: 1 + 2 + 3,\n7 | | })\n | |____^\n |",
...
}
When unescaped, the response’s summary
renders as:
info: { name: "key limes", stock: 6 }
at *query*:4:6
|
4 | dbg({
| ______^
5 | | name: "#{x}",
6 | | stock: 1 + 2 + 3,
7 | | })
| |____^
|
Output a field value
Product.create({
name: "debug1",
stock: dbg(1 + 2 + 3),
})
info: 6
at *query*:3:13
|
3 | stock: dbg(1 + 2 + 3),
| ^^^^^^^^^^^
|
{
id: "394873023799230528",
coll: Product,
ts: Time("2099-04-11T12:38:31.050Z"),
name: "debug1",
stock: 6
}
Output an object
Product.create(
dbg({
name: "debug2",
stock: 1 + 2 + 3,
})
)
info: { name: "debug2", stock: 6 }
at *query*:2:6
|
2 | dbg({
| ______^
3 | | name: "debug2",
4 | | stock: 1 + 2 + 3,
5 | | })
| |____^
|
{
id: "394873104675897408",
coll: Product,
ts: Time("2099-04-11T12:39:48.180Z"),
name: "debug2",
stock: 6
}
Output a document
dbg(
Product.create({
name: "debug3",
stock: 1 + 2 + 3,
})
)
info: { id: ID("394873211262599234"), coll: Product, ts: TransactionTime(), name: "debug3", stock: 6 }
at *query*:1:4
|
1 | dbg(
| ____^
2 | | Product.create({
3 | | name: "debug3",
4 | | stock: 1 + 2 + 3,
5 | | })
6 | | )
| |_^
|
{
id: "394873211262599234",
coll: Product,
ts: Time("2099-04-11T12:41:29.835Z"),
name: "debug3",
stock: 6
}