Parsing Kueri dari 2 Koleksi

Saya menggunakan Parse di aplikasi iOS Swift dan saya mengalami kesulitan mencari cara untuk melakukan kueri pada dua koleksi, saya kira mirip dengan bergabung.

Saya memiliki koleksi listingan dan berisi informasi rumah, serta userId. Saya telah menambahkan nilai kunci ke koleksi pengguna yang menunjukkan apakah pengguna sedang berlibur. Permintaan yang ingin saya lakukan adalah menemukan semua daftar tempat pengguna tidak sedang berlibur.

Berikut adalah kode parse yang digunakan untuk mengambil daftar, tapi saya tidak tahu bagaimana cara menambahkan kondisi kedua dari koleksi pengguna.

            let query = PFQuery(className: "Listing")
        query.order(byDescending: "createdAt")
        query.whereKey("categoryHome", equalTo: type.rawValue)
        query.limit = limit
        query.skip = skip
        query.findObjectsInBackground { (objects, error) -> Void in
            if let objects = objects as? [Listing]
            {
                success(objects)
            }
            else
            {
                let error = error! as NSError
                let errorMessage = "\(error.localizedDescription)\n(\(error.code))"
                SVProgressHUD.showError(withStatus: errorMessage)
            }
        }

Saya akan melakukan sesuatu seperti ini untuk menanyakan pengguna tetapi saya perlu menambahkannya ke kueri di atas.

    let userQuery = PFUser.query()
    userQuery.whereKeyDoesNotExist("onVacation")

Jadi, bagaimana cara menggabungkannya untuk membuat satu kueri yang mencari semua listingan di mana pengguna tidak sedang berlibur?

Jika seseorang dapat menunjukkan kepada saya cuplikan singkat, atau mengarahkan saya ke sampel di mana kueri dilakukan pada dua koleksi, itu akan sangat bagus. Saya telah membaca dokumen parse tentang hubungan, pencarian, dll. tetapi masih tidak dapat memahami cara menggabungkan kedua pertanyaan di atas.

Terima kasih atas bantuannya.


person LilMoke    schedule 28.08.2018    source sumber


Jawaban (1)


Tidak jelas dari postingan Anda bagaimana Anda mengaitkan Pengguna dengan Daftar, tetapi dengan asumsi bahwa Daftar memiliki penunjuk ke Pengguna, maka Anda dapat melakukan sesuatu seperti ini

var userQuery = PFUser.query()
userQuery!.whereKeyDoesNotExist("onVacation")
var listQuery = PFQuery(className:"Listing")
listQuery.whereKey("categoryHome", equalTo: type.rawValue)
listQuery.whereKey("user", matchesQuery: userQuery!)
listQuery.findObjectsInBackgroundWithBlock {
   (results: [PFObject]?, error: NSError?) -> Void in
   if error == nil {
   // results will contain lists where the user is not on vacation
   }
}

Jika Anda ingin membaca lebih lanjut tentang matchesQuery, lihat Panduan Parse iOS

person LulzCow    schedule 28.08.2018
comment
OMG, saya rasa itulah yang saya cari. Terima kasih, saya akan mencobanya. Dan, untuk menjawab pertanyaan Anda, saya memiliki id pengguna yang dapat saya peroleh dari daftar... jika dipikir-pikir, itu harus berupa penunjuk pengguna. Sekali lagi terima kasih, saya akan segera mencobanya. - person LilMoke; 29.08.2018
comment
@LilMoke bahkan jika Anda hanya menggunakan ID Pengguna, Anda dapat menggunakan matchesKeyInQuery sebagai gantinya (di mana userId dan objectId adalah dua kunci yang Anda cocokkan). Namun berhati-hatilah dengan matchQuery, karena ini bisa sangat tidak efisien jika kueri Anda tidak terlalu selektif dan Anda memiliki koleksi yang besar - person LulzCow; 29.08.2018
comment
Ahhh, senang mengetahuinya. Dan ya, saya mengerti, saya pasti melewatkan matchQuery. Terima kasih atas tipnya. - person LilMoke; 29.08.2018