Как использовать агрегатную функцию .max() в базе данных Isar для Flutter?
Я изучаю, как использовать базу данных Isar для моего приложения Flutter. Я пытаюсь получить максимальное значение столбца. Документация Isar предполагает, что я могу использовать.max()
агрегатную функцию, но не дает пример того, как ее использовать в запросе.
Ниже приведен код, который у меня есть. Я хотел бы, чтобы кто-нибудь предложил, что я поставил вместо<rest_of_query_here>
. Я пытался поставить его после.where()
,.filter()
, даже после.findAll()
но ни один не приемлем.
part 'client.g.dart';
@collection
class Client {
Id id = Isar.autoIncrement; // you can also use id = null to auto increment
@Index(type: IndexType.value)
String? clientId; // actually a number of the form '10001','10002',...
String? lastname;
String? firstname;
}
...
// We should use .max() somewhere in the query
Future<String> getMaxClientId() async {
final isar = await Isar.open([ClientSchema]);
final clientId = await isar.clients.<rest_of_query_here>;
return clientId == null ? '10000' : clientId;
}
...
1 ответ
В соответствии с этой документацией вам необходимо выполнить запрос свойства, чтобы использовать операцию .max(). Запрос свойств изолирует и возвращает одно свойство (или столбец, если думать в терминах SQL), над которым затем можно выполнять агрегированные операции , такие как .max(), .min(), .sum(), .average().
В вашем примере замените строку <rest_of_query_here> на следующую:
final clientId = await isar.clients.where().clientIdProperty().max();