# #flutter #google-cloud-firestore #firebase-authentication
Вопрос:
У меня уже настроена аутентификация по телефону, я хочу собрать имя пользователя, название компании и местоположение. Пользователь входит в приложение, а затем он должен заполнить остальные данные(имя, название компании и местоположение).
Ниже приведен код, который у меня есть прямо сейчас, но каждый раз, когда пользователь регистрируется и добавляет свою информацию, в firebase создается новый документ. Номер телефона хранится в другом документе, а информация о пользователе сохраняется в другом. Что я в основном хочу, так это обновить тот же документ, в котором указан номер телефона, чтобы в документе содержался номер телефона и информация!
Уже Спасибо!
Код Флаттера:
CollectionReference users = FirebaseFirestore.instance.collection("users"); String textNote; String companyName;
SizedBox( width: 320, child: Container( child: ElevatedButton( onPressed: () async { await users.add({ 'name': textNote, 'company name': companyName, }).then((value) =gt; print('User Added')) ; }, child: Text( "SEND", style: TextStyle( color: Colors.white, ), ), ), ), ),
Ответ №1:
Эта строка ниже добавляет новый документ в коллекцию пользователей:
await users.add({ 'name': textNote, 'company name': companyName, })
если вы попытаетесь добавить номер телефона таким же образом, он добавит его в новый документ.
Скорее, вы должны использовать set
не add
. С помощью set вы можете передать идентификатор документа, в который вы хотите сохранить данные (в данном случае ваш идентификатор пользователя). например:
CollectionReference users = FirebaseFirestore.instance.collection("users"); // to add name and company name // user.uid is the uid of the user. users.doc(user.uid).set({ 'name': textNote, 'company name': companyName, }); // to add phone no; users.doc(user.uid).set({'phone_no': phone_no}, SetOptions(merge: true)); // NB: Please note the SetOptions which should prevent it from overwriting // the first data.
Комментарии:
1. Спасибо за ответ, я получаю следующую ошибку. Неопределенное имя «пользователь».
2.
user.uid
является текущим пользователем firebase и может быть получен отUser user = FirebaseAuth.instance.currentUser;