在Drift中,当检查用户是否存在时,为什么getSingleOrNull() 会返回一个非空类型?
根据数据库结构,邮箱字段不能为空。我想写一个函数来检查是否已经存在使用该邮箱的用户,但我遇到了一个错误。
Future<bool> isEmEx(String email) async {
final query = await db.select(db.users)
..where((row) => row.email.equals(email))
..getSingleOrNull();
return query != null;
}
错误:
操作数不能为 'null',因此条件总是为真。请移除该条件。
解决方案
你遇到了一个级联调用,其中需要进行一次调用:
final query = await db.select(db.users)
..where((row) => row.email.equals(email))
.getSingleOrNull(); // this needs the fix
现在查询将引用getSingleOrNull() 的输出,而不是db.select() 创建的查询对象。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。