我们如何在 SQLite 数据库中存储嵌套的 JSON 对象。在 Android Room 中,我们曾经使用Embedded和Relation来存储和检索复杂的数据对象。但是在颤振中,我们怎样才能达到同样的效果呢?我尝试探索sqflite、floor和moor。但似乎没有任何帮助,除了 Moor,它允许我们使用 Joins 将值映射到 Object。类似于下面的代码。
Stream<List<TaskWithTag>> watchAllTasks() {
return (select(tasks)
..orderBy(
[
(t) =>
OrderingTerm(expression: t.dueDate, mode: OrderingMode.desc),
(t) => OrderingTerm(expression: t.name),
],
))
.join(
[
leftOuterJoin(tags, tags.name.equalsExp(tasks.tagName)),
],
)
.watch()
.map((rows) => rows.map(
(row) {
return TaskWithTag(
task: row.readTable(tasks),
tag: row.readTable(tags),
);
},
).toList());
}
那么究竟什么是正确的方法呢?