我目前正在Flutter Firebase上工作,以保存正在注册该应用程序的用户的详细信息。
我所做的是,用户可以使用其电子邮件地址和密码进行注册。但是我想知道的是如何添加其他用户信息(例如要保存的地址),以便从Firebase检索到应用程序时用户可以看到它。
我做了什么:
AuthResult user = await
FirebaseAuth.instance.createUserWithEmailAndPassword(email: _email,password:_password);
这会将用户电子邮件和密码保存到数据库中。
我已经尝试了以下解决方案:Flutter user registration with Firebase: Add extra user information (age, username)
我尝试做的事情:
Firestore.instance.collection('users').document().setData({ 'userid':
user.uid, 'username': _address });
我似乎在关于Firestore是未定义名称的错误中发现错误,并且未为类'AuthResult'定义uid。我是否缺少一些导入文件?
我只导入了:
import 'package:firebase_auth/firebase_auth.dart';
此外,我知道我必须创建一个名为user的表以允许将数据保存在其中,但是我要使用哪个表? Cloud Firestore还是实时数据库?
感谢所有帮助。
答案 0 :(得分:0)
您在一个问题中隐藏了很多问题。我将在下面尝试尽可能多地解决问题,但将来请尽量坚持一个问题。
在堆栈溢出问题上,建议一个数据库优先于另一个数据库。但是我建议阅读here上的Firebase文档。
自从开始使用Cloud Firestore以来,我们就专注于此。
您需要导入Firestore插件,就像使用Authentication插件一样。像这样:
import 'package:cloud_firestore/cloud_firestore.dart';
您已经发现,没有AuthResult.uid
属性。在这种情况下,我建议浏览reference documentation for the plugin,这样很容易看到AuthResult.user
可能是要走的路。
类似这样:
AuthResult result = await
FirebaseAuth.instance.createUserWithEmailAndPassword(email: _email,password:_password);
User user = result.user;
不是您要解决的问题的解决方案,但请使用document(user.uid)
而不是document()
。您现在拥有的东西会生成一个文档ID,而使用UID作为users
集合中的键是很习惯的(并且容易得多)。