Flutter Firebase将其他用户信息(例如地址)添加到数据库中

时间:2019-10-27 10:08:44

标签: firebase flutter

我目前正在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还是实时数据库?

感谢所有帮助。

1 个答案:

答案 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集合中的键是很习惯的(并且容易得多)。