目錄
- 1.核心API
- 1.1查詢數據列表分頁
- 1.2 列表排序
- 1.3推遲獲取與觀察
1.核心API
1.1查詢數據列表分頁
限制返回的結果數量limit,從某一位置開始查詢offset
///limit=10, offset=10
Future<List<TodoItem>> limitTodos(int limit, {int? offset}) {return (select(todoItems)..limit(limit, offset: offset)).get();
}
1.2 列表排序
使用該orderBy方法。它需要一個函數列表,用于從表中提取各個排序項。您可以使用任何表達式作為排序項。
///根據對象字段title,字母排序Future<List<TodoItem>> sortEntriesAlphabetically() {return (select(todoItems)..orderBy([// (t) => OrderingTerm(expression: t.title, mode: OrderingMode.desc),(t) => OrderingTerm(expression: t.title),])).get();}///下圖是結果,左1 mode: OrderingMode.desc 反向排序///左2 默認順序排序
1.3推遲獲取與觀察
如果您希望使查詢可作為Future或 來使用,則可以使用其中一個抽象基類Stream來優化返回類型;Selectable ,返回數據對象或者流類型 自行選擇
// Exposes `get` and `watch`
MultiSelectable<TodoItem> pageOfTodos(int page, {int pageSize = 10}) {return select(todoItems)..limit(pageSize, offset: page);
}// Exposes `getSingle` and `watchSingle`
SingleSelectable<TodoItem> selectableEntryById(int id) {return select(todoItems)..where((t) => t.id.equals(id));
}// Exposes `getSingleOrNull` and `watchSingleOrNull`
SingleOrNullSelectable<TodoItem> entryFromExternalLink(int id) {return select(todoItems)..where((t) => t.id.equals(id));
}