Flutter WebAssembly数据库交互插件surrealdb_wasm的使用
Flutter WebAssembly数据库交互插件surrealdb_wasm的使用
<surrealdb_wasm> 是一个强大的 Flutter 插件,它基于 SurrealDB 的 WebAssembly 引擎,为 Flutter 提供了与 SurrealDB 数据库的交互能力。通过该插件,开发者可以方便地在 Flutter 应用中进行数据库操作。
🔍 示例
您可以尝试在浏览器中运行一些 surreal_wasm 应用程序:
💻 安装
为了开始使用 surrealdb_wasm,您必须已经在您的机器上安装了 Flutter SDK。
-
通过
flutter pub add
命令添加依赖:flutter pub add surrealdb_wasm
-
或者,在
pubspec.yaml
文件中添加依赖项:dependencies: surrealdb_wasm:
-
运行
flutter pub get
来安装依赖项。 -
最后,在
web/index.html
文件的<head>
标签之前添加以下代码:<script type="module"> import { Surreal, StringRecordId } from "/assets/packages/surrealdb_js/assets/js/index.bundled.mjs"; import { surrealdbWasmEngines } from "/assets/packages/surrealdb_wasm/assets/wasm/surrealdb/index.bundled.js"; // 将类型暴露到全局作用域 globalThis.SurrealJS = Surreal; globalThis.StringRecordId = StringRecordId; globalThis.WasmEngine = surrealdbWasmEngines; </script>
✨ 功能
请参阅 surrealdb_js 包以获取功能列表。
🏃 示例代码
基本示例
import 'package:surrealdb_js/surrealdb_js.dart';
import 'package:surrealdb_wasm/surrealdb_wasm.dart';
final db = SurrealWasm.getInstance();
// 连接到数据库
await db.connect('indxdb://surreal');
await db.use(namespace: 'test', database: 'test');
// 创建记录
final created = db.create('person',
{
'title': 'CTO',
'name': {
'first': 'Tom',
'last': 'Jerry',
},
'marketing': true,
},
);
// 获取创建记录的ID
final id = created['id'].toString();
// 更新记录
final merged = await db.merge(
id,
{
'marketing': false,
},
);
// 查询记录
final tom = await db.select(id);
// 删除记录
final deleted = await db.delete(id);
更多代码示例请参考 integration test 和 example project。
事务支持
final result = await db.transaction((txn) async {
txn.query('DEFINE TABLE test SCHEMAFULL;');
txn.query(r'DEFINE FIELD id ON test VALUE <record>($value) ASSERT $value != NONE;');
txn.query('DEFINE FIELD name ON test TYPE string;');
txn.query(
r'CREATE test SET name = $name;',
bindings: {'name': 'John'},
);
if (somethingWrong) {
txn.cancel();
}
});
更多代码示例请参考 transaction test。
🧑💼 贡献
欢迎贡献!请查看仓库中的未实现功能或问题,并随时提交拉取请求。更多信息请参阅 贡献指南。
📔 许可证
该项目根据 MIT 许可证授权。
🗒️ 引用
如果您使用了这个包,请考虑引用它:
[@misc](/user/misc){surrealdb_wasm,
author = {Lim Chee Kin},
title = {surrealdb_wasm: Flutter SurrealDB WebAssembly(WASM) package},
year = {2023},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {\url{https://github.com/limcheekin/surrealdb_wasm}},
}
更多关于Flutter WebAssembly数据库交互插件surrealdb_wasm的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter WebAssembly数据库交互插件surrealdb_wasm的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
SurrealDB
是一个分布式数据库,而 surrealdb_wasm
是一个基于 WebAssembly (Wasm) 的插件,允许你在 Flutter Web 应用中与 SurrealDB 进行交互。以下是如何在 Flutter Web 项目中使用 surrealdb_wasm
插件的基本步骤。
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 surrealdb_wasm
依赖:
dependencies:
flutter:
sdk: flutter
surrealdb_wasm: ^0.1.0 # 请确保使用最新版本
然后运行 flutter pub get
来获取依赖。
2. 初始化 SurrealDB
在你的 Flutter 代码中,首先需要初始化 SurrealDB 实例。通常,你可以在应用的 main
函数中或某个初始化方法中进行。
import 'package:surrealdb_wasm/surrealdb_wasm.dart';
Future<void> main() async {
// 初始化 SurrealDB
final db = SurrealDB();
// 连接到数据库
await db.connect('ws://localhost:8000/rpc'); // 替换为你的 SurrealDB 地址
// 设置命名空间和数据库
await db.use('namespace', 'database');
runApp(MyApp(db: db));
}
class MyApp extends StatelessWidget {
final SurrealDB db;
const MyApp({Key? key, required this.db}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'SurrealDB Flutter Demo',
home: MyHomePage(db: db),
);
}
}
3. 与数据库交互
在 MyHomePage
中,你可以使用 SurrealDB
实例来执行查询、插入、更新和删除操作。
class MyHomePage extends StatefulWidget {
final SurrealDB db;
const MyHomePage({Key? key, required this.db}) : super(key: key);
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
List<dynamic> records = [];
@override
void initState() {
super.initState();
fetchData();
}
Future<void> fetchData() async {
// 查询数据
final result = await widget.db.query('SELECT * FROM table_name');
setState(() {
records = result;
});
}
Future<void> insertData() async {
// 插入数据
await widget.db.create('table_name', {
'name': 'John Doe',
'age': 30,
});
fetchData(); // 刷新数据
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('SurrealDB Flutter Demo'),
),
body: ListView.builder(
itemCount: records.length,
itemBuilder: (context, index) {
final record = records[index];
return ListTile(
title: Text(record['name']),
subtitle: Text('Age: ${record['age']}'),
);
},
),
floatingActionButton: FloatingActionButton(
onPressed: insertData,
child: Icon(Icons.add),
),
);
}
}
4. 运行应用
确保你已经启动了 SurrealDB 服务器,并且可以通过 WebSocket 连接到它。然后运行你的 Flutter Web 应用:
flutter run -d chrome
5. 注意事项
- WebAssembly 支持:
surrealdb_wasm
依赖于 WebAssembly,因此只能在 Flutter Web 项目中使用。 - CORS 问题: 如果你在开发环境中遇到 CORS 问题,确保 SurrealDB 服务器配置了正确的 CORS 头。
- 安全性: 在生产环境中,确保数据库连接是安全的(例如使用
wss://
而不是ws://
)。
6. 其他操作
除了查询和插入,你还可以使用 surrealdb_wasm
执行其他操作,如更新和删除:
// 更新数据
await widget.db.update('table_name:id', {
'age': 31,
});
// 删除数据
await widget.db.delete('table_name:id');