我很难理解如何使用riverpod在flutter内部使用mongodb。有两种方法可以获得连接,一种是使用var db = Db("mongodb://localhost:27017/mongo_dart-blog"); await db.open();
其他使用var db = await Db.create("mongodb+srv://<user>:<password>@<host>:<port>/<database-name>?<parameters>"); await db.open();
我尝试使用后一种方法,因为我的示例在atlas cloud上,但这里问题开始了,因为后一种方法的类型是Future,我无法使用这里使用futureprovider创建的db示例,因为类型是asyncvalue。
我试图在不使用未来提供程序的情况下解决这个问题,通过使用基本提供程序来创建示例并使用如下重写:
final dataProvider = Provider<Db>((ref) => throw 'Database Not Initialized');
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
var db = Db.create('mongo-srv-string');
db.open();
runApp(
const ProviderScope(
overrides: [ dataProvider.overrideWithValue(db);]
child: Application(),
),
);
}
但它抛出了一个错误:MongoDart Error: Db is in the wrong state: State.OPENING
我认为自己是一个初学者在问候与mongo和riverpod工作
所以,如果有人遇到过类似的问题或者在这些概念上比我更有知识的人帮助我解决这个问题,我将非常感激。
1条答案
按热度按时间nfeuvbwi1#
您需要等待数据库打开: