我只想通过其ID 检索单个文档的数据。我的示例数据方法:
TESTID1 {
'name': 'example',
'data': 'sample data',
}
Run Code Online (Sandbox Code Playgroud)
是这样的:
Firestore.instance.document('TESTID1').get() => then(function(document) {
print(document('name'));
}
Run Code Online (Sandbox Code Playgroud)
但这似乎不是正确的语法。
我找不到有关在flutter(飞镖)中查询firestore的任何详细文档,因为firebase文档仅解决了本机WEB,iOS,Android等问题,而没有解决Flutter。cloud_firestore的文档也太短了。只有一个示例显示了如何将多个文档查询到流中,这不是我想要的。
有关缺少文档的相关问题:https : //github.com/flutter/flutter/issues/14324
从单个文档中获取数据并不难。
更新:
Firestore.instance.collection('COLLECTION').document('ID')
.get().then((DocumentSnapshot) =>
print(DocumentSnapshot.data['key'].toString());
);
Run Code Online (Sandbox Code Playgroud)
不执行。
今天我开始尝试 Firebase Live 数据库。也许我在sql方面想得太多了。但我想要做的是从我的数据库中获取一条记录,其中值等于带有颤振的变量。我的桌子看起来像这样:
我想要实现的是这样的:
FirebaseDatabase.instance.reference().child('users').where('User_id', 1508)
Run Code Online (Sandbox Code Playgroud)
就像我说的。对于实时数据库,我是一个完全的初学者。我希望有人可以帮助我解决我遇到的这个问题。
亲切的问候,纳马尼克斯
我只想在 ONE 文档更改或更新时收到通知。每个获取更新的示例总是使用集合。我试图只使用一个文档来实现它,但它永远不会得到任何更新。这是我现在所拥有的不起作用的东西:
@override
Widget build(BuildContext context) {
StreamBuilder<DocumentSnapshot>(
stream: Firestore.instance
.collection("users")
.document(widget.uid)
.snapshots(),
builder:
(BuildContext context, AsyncSnapshot<DocumentSnapshot> snapshot) {
user = snapshot.data.data as User;
});
Run Code Online (Sandbox Code Playgroud)
我已经调试了 100 次,但它永远不会进入“builder:”部分。顺便说一下,这不是文档引用的问题。我在这里做错了什么?
我正在尝试将 DocumentSnap 从 Firebase 映射到 Flutter 中的 Json 类。我可以确认我正在从文档中获取数据,但我无法将收集的数据传递给我的 Json 对象。我已附上代码和错误消息。
用于从 Firebase DatabaseService.dart 获取文档的类
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:oast_app/widgets/auth_class.dart';
class FireTest {
Future<List<UserCheck>> streamUser(FirebaseUser user) async {
DocumentSnapshot querySnapshot =
await Firestore.instance.collection('users').document(user.uid).get();
if (querySnapshot.exists) {
print('success');
print(querySnapshot.data['fname']);
print(querySnapshot.data['lname']);
querySnapshot.data.map<String, dynamic>((json) => UserCheck.fromJson(json)); **this is whats erroring**
}
return [];
}
}
Run Code Online (Sandbox Code Playgroud)
Json 对象类
import 'package:flutter/material.dart';
import 'package:json_annotation/json_annotation.dart';
part 'auth_class.g.dart';
@JsonSerializable(nullable: false)
class UserCheck extends ChangeNotifier {
final String uid;
final String fName;
final String lName;
final String regEmail; …Run Code Online (Sandbox Code Playgroud) 我想从列表块中的 Firestore 读取数据我不想使用流构建器我想单独访问文档字段我尝试这个但不起作用
class ProductList extends StatelessWidget {
Stream<DocumentSnapshot> snapshot = Firestore.instance.collection("listofprods").document('ac1').snapshots();
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(),
body: Padding(
padding: const EdgeInsets.all(8.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
Container(
decoration: BoxDecoration(
border: Border.all(color: Colors.black)
),
child: ListTile(
title: Text(snapshot['name']),//here error
),
)
],
Run Code Online (Sandbox Code Playgroud) 我尝试了一些代码但得到了一个例外。
我得到的例外:
java.lang.IllegalArgumentException: Invalid document reference. Document references must have an even number of segments, but Users has 1
我搜索了一下,根据这个,文档引用必须有偶数个段,如:集合 - 文档 - 集合 - 文档 - 集合 - 文档
从 Firestore 获取数据的查询:
String getIsNewUSer;
Firestore.instance.collection('Users').document(uid).get().then((DocumentSnapshot document){
print("document_build:$document");
setState(() {
getIsNewUSer=document['IsNewUser'];
print("getIsNewUSe:$getIsNewUSer");
});
});
Run Code Online (Sandbox Code Playgroud)
查询将数据更新到 Firestore:
Firestore.instance
.collection('Users')
.document(uid)
.updateData({
"IsNewUser":"1"
}).then((result){
print("new USer true");
}).catchError((onError){
print("onError");
});
Run Code Online (Sandbox Code Playgroud)
我的这些代码行超出了异常。
初始状态:
void initState() {
super.initState();
this.uid = '';
FirebaseAuth.instance.currentUser().then((val){
setState(() {
this.uid= val.uid;
print("uid_init: $uid");
});
});
} …Run Code Online (Sandbox Code Playgroud) 如何返回QuerySnapshot作为Future >>?
程式码片段:
Future <List<Map<dynamic, dynamic>>>() {
List<Map<dynamic,dynamic>> list;
.....
.....
QuerySnapshot collectionSnapshot = await collectionRef.getDocuments();
list = collectionSnapshot.documents; <--- ERROR
return list;
}
Run Code Online (Sandbox Code Playgroud)
我认为我需要使用的Map,但无法绕开它。
我有这个显示用户信息的配置文件屏幕。用户通过身份验证后,我将数据存储在云 Firestore 中,文档 ID 等于用户 ID。现在,我想从 cloud firestore 中检索数据,当前 userId 等于文档 id。
现在我有这个:
class UserManagement {
getData() async{
String userId = (await FirebaseAuth.instance.currentUser()).uid;
print(userId);
return Firestore.instance.collection('users').document(userId);
}
Run Code Online (Sandbox Code Playgroud)
但是当我注销并使用其他用户重新登录后,它无法正常工作,它显示相同的数据。
UserManagement().getData().then((results) {
setState(() {
userFlag = true;
users = results;
});
});
Run Code Online (Sandbox Code Playgroud)
现在,如何获取其他字段,如姓名、电子邮件、课程、电话号码等,以及所有存储到 user.right 中的所有值?
dart firebase firebase-authentication flutter google-cloud-firestore