firebase - 如何检查特定文档 ID 中是否包含某个值?
问题描述
.exist
首先,我想使用该方法检查特定文档 ID 是否存在。如果存在,那么我想检查该文档 ID 是否containsValue == true
还有其他功能。
目前,我正在使用 aFutureBuilder
从 Firebase 获取详细信息,但它运行不完美。
我附上了一张数据库的图片,其中包含一个带有 +91919982779295 的文档 ID 和一个设置为 true 的字段名称“已验证”。只想检查文档 ID 是否存在,如果存在则它包含值 true 如代码的注释部分所示。
我想这将通过.exist
and.containsValue
方法完成,但我不知道如何将它们放在一起FutureBuilder
这是我的代码:
import 'package:flutter/material.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'dart:async';
class Navigatorpage extends StatefulWidget {
var phoneNumber;
Navigatorpage({this.phoneNumber});
@override
_NavigatorpageState createState() => _NavigatorpageState();
}
class _NavigatorpageState extends State<Navigatorpage> {
var phoneNumber;
final Firestore firestore = Firestore.instance;
_NavigatorpageState({this.phoneNumber});
Future<DocumentSnapshot> getDetails() =>firestore.collection('users').document(+919982779295).get();
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: FutureBuilder(
future: Future.wait([
getDetails()
]),
builder: (context, snapshot){
Here first need to check
if( the documentId named +919982779295 exists){
if( if exits then check whether it contains the value true as show in the image using
containsValue method)
{ return something;}
else { return something;}
}
else {return something;}
}
},
),
);
}
}
解决方案
我想通了...这就是我要找的
import 'package:flutter/material.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:kartofill/Phoneverification.dart';
import 'dart:async';
import 'package:kartofill/Splashscreen.dart';
class Navigatorpage extends StatefulWidget {
var phoneNumber;
/* Navigatorpage({this.phoneNumber}); */
@override
_NavigatorpageState createState() => _NavigatorpageState();
}
class _NavigatorpageState extends State<Navigatorpage> {
var phoneNumber;
String font;
/*final Firestore firestore = Firestore.instance;*/
/*_NavigatorpageState({this.phoneNumber}); */
Future <String> getDetails() async{
final snapShot = await Firestore.instance.collection('users').document('+919954603381').get();
if(snapShot.exists){
if(snapShot.data.containsValue("true")){
font='a';
}
else{
font='b';
}
}
else{
font='c';
}
return font.toString();
}
@override
Widget build(BuildContext context) {
return FutureBuilder(
future: Future.wait([getDetails()]),
builder: (context,snapshot){
print(snapshot.data.toString());
switch(snapshot.data.toString()) {
case'[a]': {
return Phoneverification();
}
break;
case '[b]': {
return Text('B');
}
break;
case '[c]': {
return Text('C');
}
break;
default: {
return Text('Default');
}
break;
}
},
);
}
}
推荐阅读
- python - Python。如何在数据框中创建一个新列,该列等于 2 个特定日期的天数?
- node.js - 如何将此响应更改为简单数组?
- git - Docker 使用经过身份验证的 git 调用
- r - 在 R(插入符号)中重新运行 preProcess()、predict() 和 train() 时模型精度不同
- serenity-bdd - 如何使用 Get.resource("path") REST API,将 Serenity Screenplay 与 HTTPS 验证作为 Actor
- javascript - Angular Material Autocomplete - 如何选择选项
- svelte - 为什么我不能在 svelte3 的脚本标签中访问“$:”又名反应变量?
- python-3.x - 打印语句在函数中工作但不在代码主体中
- image - 如何使用 micropython 语言将图像发送到 API
- python - 如何使用python在多处理中动态更改参数到进程