Flutter使用faunadb_http包调用Fauna DB的Select函数无法设置正确默认值
解决方法
你遇到的问题是default_参数要求传入Expr子类实例,直接传Dart原生类型或null不符合参数要求,对应配置也会导致参数被丢弃:
- 传
null会被@JsonKey的disallowNullValue配置过滤,Fauna服务端收不到默认值配置,找不到路径就直接抛出错误。 - 传
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
相关产品推荐
相关产品推荐

