Запрос базы данных Firestore для диапазона дат - PullRequest
0 голосов
/ 27 марта 2020

Я создаю приложение, чтобы помочь людям ехать из аэропорта, и я пытаюсь запросить в моей базе данных поездки в определенном диапазоне.

Вот что у меня есть:

import UIKit
import Firebase

class DiscoverRideViewController: UIViewController {

    var userFullName = String()
    var dateEarly = Constants.UserInfo.chosenDate.addingTimeInterval(-900)
    var offset = TimeInterval()

    @IBOutlet weak var createRide: UIButton!

    override func viewDidLoad() {
        super.viewDidLoad()
        print(dateEarly)
        offset = TimeInterval(TimeZone.current.secondsFromGMT())
        print("timezone offset: ", offset)
        dateEarly = dateEarly.addingTimeInterval(offset)

        print("searching for documents:")
        let db = Firestore.firestore()
        db.collection("rides-wfu").whereField("aiport", isEqualTo: Constants.UserInfo.chosenAirport).whereField("ridetime", isGreaterThanOrEqualTo: dateEarly).getDocuments() { (querySnapshot, err) in
            if let err = err {
                print("Error getting documents: \(err)")
            } else {
                for document in querySnapshot!.documents {
                    print("\(document.documentID) => \(document.data())")
                }
            }
        }
    }

    @IBAction func newRideTapped(_ sender: Any) {
        let db = Firestore.firestore()
        print(Constants.UserInfo.chosenDate)
        db.collection("rides-wfu").addDocument(data: ["airport":Constants.UserInfo.chosenAirport, "ridetime":Constants.UserInfo.chosenDate, "groupmembers":[Constants.UserInfo.firstName+" "+Constants.UserInfo.lastName, "", "", ""]])
    }
}

Функция создания поездки выполнена успешно, но у меня возникают проблемы с запросами, и да, я построил индекс. Я пробовал почти все, и методы db.collection (). Where () по какой-то причине создают ошибки в моем компиляторе - только там, где работают методы. Будем благодарны за любую помощь или руководство.

Класс констант: Кажется, мой класс констант работает так, как я делю переменные между контроллерами представления.

Это ошибка, которую я получаю, когда пытаюсь использовать 'where' вместо 'whereField', хотя из документации видно, что 'where' - это действительная команда для запроса базы данных Firestore. Может быть, мне нужно скачать какие-нибудь дополнительные модули? У меня есть следующие: модуль 'Firebase / Analytics' модуль 'Firebase / Auth' модуль 'Firebase / Core' модуль 'Firebase / Firestore'

1 Ответ

1 голос
/ 29 марта 2020

Теперь у вас есть запрос:

db.collection("rides-wfu").where("ridetime", ">", timestampEarly)

Это неверный синтаксис запроса для Swift. То, что вы ищете:

db.collection("rides-wfu").whereField("ridetime", isGreaterThanOrEqualTo: timestampEarly)

Я настоятельно рекомендую изучить документацию Firebase по , запрашивающему Firestore , поскольку она содержит примеры этого и многих других типов запросов.

...