Flutter数据库交互插件darango的使用

发布于 1周前 作者 sinazl 来自 Flutter

Flutter数据库交互插件darango的使用

darango 是一个用于与 ArangoDB 数据库进行交互的 Dart 驱动程序。该包基于 http 和 ArangoDB API,允许使用 Dart 语言与您的 ArangoDB 数据库进行通信。我在业余时间开发了它,如果您愿意,欢迎贡献代码。

使用

首先,您需要创建一个数据库并连接到它。

import 'package:darango/darango.dart';

String url = "http://127.0.0.1:8529";
String database_name = "";
String username = "";
String password = "";

Database database = Database(url);
await database.connect(database_name, username, password);

连接成功后,您可以对文档执行 CRUD 操作。

Collection usersCollection = await database.collection("users");

if(usersCollection != null){
    // 创建
    Map<String, dynamic> user = {"lastName":"Toto", "FirstName":"Titi"};
    Document doc = await usersCollection.document().add(user);
    
    // 读取
    doc = await usersCollection.document(document_handle: doc.id).get(); // document_handle => _id 或 _key
    
    // 更新
    Map<String, dynamic> user2 = {
        "_key":doc.key,
        "_id":doc.id,
        "_rev":doc.rev,
        "lastName":"Toto",
        "FirstName":"Titi", 
        "email": "toto@gmail.com"
    };
    doc = await usersCollection.document(document_handle: doc.id).update(user2);
    
    // 删除
    await usersCollection.document(document_handle: doc.id).delete(); 
}

您还可以执行 AQL 查询。

Aql aql = database.aql();
String query = """
    FOR c IN users
    RETURN c
""";

dynamic result = await aql.run(query);
print(result["result"]);

示例代码

以下是一个完整的示例,展示了如何在 Flutter 应用程序中使用 darango 插件。

import 'dart:async';

import 'package:flutter/material.dart';
import 'package:darango/darango.dart';

late Database database;

late Collection usersCollection;

void initArangoDB() async {
  database = Database('http://10.0.2.2:8529');
  await database.connect('', '', '');
  usersCollection = (await database.collection('users'))!;
}

FutureOr<dynamic> getUser(String id) async {
  Document doc;
  doc = await usersCollection.document(document_handle: id).get();
  print(doc.data);
  return doc.data;
}

void main() async {
  initArangoDB();
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    getUser('');

    return MaterialApp(
      title: 'Welcome to Flutter',
      home: Scaffold(
        appBar: AppBar(
          title: Text('Welcome to Flutter'),
        ),
        body: Center(
          child: Text('Hello World'),
        ),
      ),
    );
  }
}

更多关于Flutter数据库交互插件darango的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter数据库交互插件darango的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是一个关于如何在Flutter项目中使用darango插件与ArangoDB进行数据库交互的示例代码。darango是一个用于与ArangoDB进行通信的Flutter插件。

首先,确保你已经在pubspec.yaml文件中添加了darango依赖:

dependencies:
  flutter:
    sdk: flutter
  darango: ^最新版本号 # 请替换为当前可用的最新版本号

然后,运行flutter pub get来获取依赖。

接下来,创建一个Flutter应用并进行数据库交互。以下是一个简单的示例,展示了如何连接到ArangoDB,创建数据库、集合,并执行一个基本的查询。

import 'package:flutter/material.dart';
import 'package:darango/darango.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  ArangoDBClient? _client;
  String _status = "Not connected";

  @override
  void initState() {
    super.initState();
    _connectToDatabase();
  }

  Future<void> _connectToDatabase() async {
    // ArangoDB connection details
    String url = 'http://your-arangodb-url:8529'; // 替换为你的ArangoDB URL
    String username = 'root'; // 替换为你的用户名
    String password = 'yourPassword'; // 替换为你的密码

    _client = ArangoDBClient(url, username, password);

    try {
      // 测试连接
      await _client!.version();
      setState(() {
        _status = "Connected";
      });

      // 创建数据库(如果不存在)
      var dbExists = await _client!.databaseExists('testDB');
      if (!dbExists) {
        await _client!.createDatabase('testDB');
        setState(() {}); // 更新UI(如果需要)
      }

      // 切换到测试数据库
      _client!.useDatabase('testDB');

      // 创建集合(如果不存在)
      var collectionExists = await _client!.collectionExists('testCollection');
      if (!collectionExists) {
        await _client!.createCollection('testCollection');
        setState(() {}); // 更新UI(如果需要)
      }

      // 插入文档
      var documentId = await _client!.insertDocument('testCollection', {
        'name': 'Flutter',
        'type': 'Framework',
      });
      print('Document inserted with ID: $documentId');

      // 查询文档
      var documents = await _client!.queryDocuments('testCollection', AqlQuery.all());
      print('Documents: $documents');

    } catch (e) {
      print('Error connecting to ArangoDB: $e');
      setState(() {
        _status = "Connection error";
      });
    }
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter ArangoDB Example'),
        ),
        body: Center(
          child: Text('Status: $_status'),
        ),
      ),
    );
  }
}

注意事项:

  1. 安全性:在实际应用中,不要硬编码用户名和密码。考虑使用环境变量或安全的密钥管理服务。
  2. 错误处理:上面的示例中只是简单地打印了错误信息。在实际应用中,应该更好地处理这些错误,可能包括用户友好的错误消息或重试机制。
  3. 依赖管理:确保你使用的是darango插件的最新稳定版本。
  4. AQL查询:上面的示例中使用了AqlQuery.all()来查询所有文档。你可以根据需要构建更复杂的AQL查询。

这个示例展示了如何使用darango插件在Flutter应用中与ArangoDB进行基本的数据库交互。你可以根据需要扩展这个示例来实现更多功能。

回到顶部