You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter使用faunadb_http包调用Fauna DB的Select函数无法设置正确默认值

解决方法

你遇到的问题是default_参数要求传入Expr子类实例,直接传Dart原生类型或null不符合参数要求,对应配置也会导致参数被丢弃:

  1. 传null会被@JsonKey的disallowNullValue配置过滤,Fauna服务端收不到默认值配置,找不到路径就直接抛出错误。
  2. 传Obj({})返回空对象是正常的,因为Obj对应Fauna的对象类型,你传什么类型的Expr实例就会返回什么类型的默认值。

要返回指定类型的默认值,直接用faunadb_http包内置的基础类型包装类即可:

  • 字符串默认值用Str("默认内容")
  • 整数默认值用Int(0)
  • 布尔默认值用Bool(false)
  • 空值默认值用NullExpr()

修改后的示例代码:

// 字段不存在时返回Int类型默认值0
'itemPrice': Select(["data", "itemPrice"], Var("postDoc"), default_: Int(0)),
// 字段不存在时返回String类型默认值"未填写"
'itemLocation': Select(["data", "itemLocation"], Var("postDoc"), default_: Str("未填写")),

你也可以用通用的Literal包装类自动转换Dart原生类型:

'itemPrice': Select(["data", "itemPrice"], Var("postDoc"), default_: Literal(0)),
'itemLocation': Select(["data", "itemLocation"], Var("postDoc"), default_: Literal("未填写")),

内容的提问来源于stack exchange,提问作者Rahul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 01:54:03