Как создать коллекцию внутри документа uid в Firestore с помощью Flutter?

Как создать вложенную коллекцию в Firestore с Flutter на основе динамического идентификатора пользователя?

Архитектура должна выглядеть так: пользователи (коллекция) -> UID (документ - уникальный для каждого пользователя) -> хранилище (коллекция) -> учетные данные (документ)

В настоящее время я использую приведенную ниже реализацию, которая, очевидно, при вызове просто создает архитектуру, которая мне нужна за исключением для использования строки «uid» вместо динамического uid пользователя в качестве документа, в котором находится коллекция хранилища. in. Как изменить это так, чтобы элемент документа ('uid') был фактическим документом uid текущего пользователя, а не просто строкой «uid»?

import 'package:mindpass/models/user.dart';
import 'package:cloud_firestore/cloud_firestore.dart';

class DatabaseService {

  final String uid;
  DatabaseService({ this.uid });
  String credential;

  // collection reference
  final CollectionReference vaultCollection = Firestore.instance.collection('users').document('uid').collection('vault');

  Future<void> updateVaultData(String credUN, String timeStamp) async {
    return await vaultCollection.document(credential).setData({
    'credUN': '"aribtraryUN"',
    'timeStamp': Timestamp.now()
  });
  }

person metamonkey    schedule 15.03.2020    source источник


Ответы (1)


Если пользователь вошел в систему с помощью Firebase Authentication, вы можете получить его UID с помощью:

var user = await FirebaseAuth.instance.currentUser();
var uid = user.uid;

А затем получите их коллекцию хранилищ с помощью:

final CollectionReference vaultCollection = Firestore.instance.collection('users').document(uid).collection('vault');
person Frank van Puffelen    schedule 15.03.2020