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

Mongo_dart类型赋值错误:Rational无法赋值给Decimal问题求助

问题解决:Dart连接MongoDB时出现类型赋值错误

问题本质

你遇到的错误是由于bson-2.0.1库与你使用的Dart dev版SDK(2.19.0-264.0.dev)存在兼容性问题,具体表现为Rational类型无法赋值给Decimal类型,属于依赖库的版本适配或类型定义问题。

解决方案

1. 升级/调整依赖版本

打开项目的pubspec.yaml文件,将mongo_dart替换为当前最新稳定版,或手动指定兼容的bson版本,示例:

dependencies:
  shelf: ^1.4.0
  shelf_router: ^1.1.0
  mongo_dart: ^0.9.1+1  # 替换为最新稳定兼容版

修改后执行dart pub get更新依赖。

2. 清除Pub缓存并重新获取依赖

缓存的旧依赖可能引发冲突,执行以下命令:

dart pub cache clean
dart pub get

3. 切换到Dart稳定版SDK

Dev版SDK存在未稳定的API变动,切换到稳定版(如2.18.x系列)可规避此类兼容性问题,执行命令安装并切换:

dart sdk install stable
dart sdk use stable

4. 临时修复(仅紧急场景使用,不推荐)

找到报错的decimal_128.dart文件(路径:../../.pub-cache/hosted/pub.dartlang.org/bson-2.0.1/lib/src/types/decimal_128.dart),定位到第36行,将Rational类型转换为Decimal类型,示例:

// 原报错代码
Decimal value = Rational(...);
// 修改后
Decimal value = Rational(...).toDecimal();  // 根据实际方法调整转换逻辑

注意:此方法仅为临时 workaround,后续依赖更新后可能失效,优先通过版本调整解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 06:45:37