flutter - Fauna DB 和颤动,无法在 Select 上使用区区数据库 http 包获取默认值
问题描述
我正在使用 zoodb_http 包,如果集合中不存在该字段,我希望从 Fauna DB 返回该值。我只是无法弄清楚我应该在这个包的默认参数中放入什么,以便将其作为默认值取回。
我尝试了默认参数的以下两种变体,第一个出现“路径未找到值”错误,第二个出现空 Object {}。
'itemPrice': Select(["data", "itemPrice"], Var("postDoc"), default_: null),
'itemLocation': Select(["data", "itemLocation"], Var("postDoc"), default_: Obj({})),
有人可以帮我理解我应该传递给 default_ 什么,以便我得到一个 String 或 Int 作为响应。
这是包中 Select 类的代码
@JsonSerializable()
class Select extends Expr {
@JsonKey(name: 'select')
final Object path;
final Expr from;
@JsonKey(name: 'default', disallowNullValue: true, includeIfNull: false)
final Expr? default_;
Select(this.path, this.from, {this.default_});
factory Select.fromJson(Map<String, dynamic> json) => _$SelectFromJson(json);
@override
Map<String, dynamic> toJson() => _$SelectToJson(this);
}
这是针对 Expr 类的
class Expr {
static Object? wrap_value(dynamic value) {
if (value is List) {
return wrap_values(value);
} else if (value is Map<String, dynamic>) {
return Obj(value);
} else if (value is DateTime) {
return Time(value.toUtc().toIso8601String());
} else {
return value;
}
}
static Object? wrap_values(Object? data) {
if (data == null) return null;
if (data is List) {
return List.generate(
data.length,
(e) => wrap_value(data[e]),
growable: false,
);
} else if (data is Map<String, dynamic>) {
return data.map(
(key, value) => MapEntry(key, wrap_value(value)),
);
}
return data;
}
Expr();
factory Expr.fromJson(Map<String, dynamic> json) => _$ExprFromJson(json);
Map<String, dynamic> toJson() => _$ExprToJson(this);
@override
String toString() {
return json.encode(this).toString();
}
}
解决方案
由于我不熟悉 Dart,因此我将搁置特定于语言的方面。
也就是说,当我阅读您的帖子时,它似乎按定义Select()
工作。第三个参数是未找到您的数据时返回的内容,例如.null
在第一种情况下,您null
显式返回,并且 Fauna 删除具有空值的键,因此确实找不到该值。
在第二种情况下,您返回一个空对象,并且您收到一个空对象,因此这似乎也按定义工作。
有人可以帮我理解我应该传递给 default_ 什么,以便我得到一个 String 或 Int 作为响应。
在这种情况下,您需要显式设置一个Expr
将评估为字符串或 Int 的值。如果空字符串""
和零0
是合理的默认值,那么您会想要:
'itemPrice': Select(["data", "itemPrice"], Var("postDoc"), default_: 0),
和
'itemLocation': Select(["data", "itemLocation"], Var("postDoc"), default_: ""),
推荐阅读
- javascript - 问题示例 phoneNumber
- android-studio - Android Studio - 构建库 aar 文件不会将风味或 buildType 附加到输出
- java - Checkstyle 升级后如何验证自定义配置 xml
- flutter - 当文本字段集中在颤动时如何避免键盘
- android - Webview 无法在 html url 中加载 pdf
- reactjs - Typescript React:如何覆盖默认的 html 输入元素属性道具类型
- android - 需要单击两次才能更新文本视图中的文本
- javascript - 切换布尔值反应
- python - Jupyter Notebook 中的 PySpark:“列”对象不可调用
- vba - 制作组合框选择控制形状Powerpoint VBA的可见性/不可见性