gpt4 book ai didi

dart - 在 dart 中获取存储在数据存储区中的一种实体的总数的推荐方法是什么?

转载 作者:行者123 更新时间:2023-12-01 13:35:05 24 4
gpt4 key购买 nike

我们正在使用 gcloud dart 库访问数据存储。我们想显示用户总数。

当然,最简单的方法是:

db.query(User).run().length

但这会获取所有用户。

有没有办法使用 dart gcloud 库高效地运行此查询?如果不是,查询所有实体是否会成为一个大的性能问题,我们是否应该将用户总数存储在一个单独的实体中?

最佳答案

Google Cloud Datastore 提供了许多特殊实体类型,它们使用保留的__xxx__ 名称,可用于查询数据存储元数据。

使用此机制可以例如使用__namespace__查询所有命名空间,使用__kind__查询所有类型。 package:gcloud已经包含特殊的 KindNamespace用于此目的的种类。

任何其他元数据种类都可以由用户定义,除其他外,用于查询种类计数。

下面是一段代码,可以用来计算 Dart 中的实体数量:

import 'dart:async';

import 'package:appengine/appengine.dart';
import 'package:gcloud/db.dart';

Future main(List<String> args) async {
await withAppEngineServices(() async {
print(await getStats('Package'));
print(await getStats('PackageVersion'));
});
}

Future<Stats> getStats(String kind) async {
final query = dbService.query(Stats)..filter('kind_name =', kind);
final Stats stats = (await query.run().toList()).first;
return stats;
}

@Kind(name: '__Stat_Kind__', idType: IdType.String)
class Stats extends ExpandoModel {
@StringProperty(propertyName: 'kind_name')
String kindName;

@IntProperty()
int count;

String toString() => 'Stats(kind: "$kindName", count: $count)';
}

关于dart - 在 dart 中获取存储在数据存储区中的一种实体的总数的推荐方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44139596/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com