Menggunakan pemicu afterDelete untuk mengubah banyak pengguna

Ketika objek tertentu dihapus, saya perlu menggunakan pemicu afterDelete untuk menghapus referensi ke objek yang baru saja dihapus. Secara khusus, kelas Pengguna memiliki kolom yang merupakan penunjuk ke objek bertipe yang baru saja dihapus. Oleh karena itu saya perlu menghapus kolom itu untuk pengguna yang menyetelnya ke objek yang baru saja dihapus. Untuk melakukan ini, saya menanyakan pengguna, mengulang hasil kueri, unseting atributnya, lalu memanggil saveAll. Kekhawatiran saya adalah hasil kueri mungkin menampilkan banyak pengguna, dan saya perlu memastikan semuanya diperbarui.

Pertanyaan saya adalah, apakah pemicu Cloud Code memiliki batas maksimal 1000 kueri? Apakah ada cara yang lebih baik untuk membatalkan penunjuk ini setelah objek itu dihapus? Apakah tidak ada penghapusan otomatis pointer ke objek yang dihapus ini?

Parse.Cloud.afterDelete("Book", function(request) {
    Parse.Cloud.useMasterKey();

    var book = request.object;

    var userQuery = new Parse.Query(Parse.User);
    userQuery.equalTo("Favorite_Book", book);
    userQuery.limit(1000);
    userQuery.find( {
        success:function(users){
            for (var i = 0; i < users.length; i++) {
                users[i].unset("Favorite_Book");
            }
            Parse.Object.saveAll(users, {
                success: function(users) {},
                error: function(users, error) {
                    console.error("Failed to update users: " + error.code + ": " + error.message);
                }
            });
        }, error: function(error) {
            console.error("Failed to fetch users: " + error.code + ": " + error.message);
        }
    });
});

person Jordan H    schedule 23.12.2015    source sumber


Jawaban (1)


Ada dua masalah utama yang perlu Anda ketahui:

  1. Kueri parse hanya mengembalikan maksimal 1000 catatan. Untuk memproses lebih banyak catatan, Anda perlu membuat halaman hasil menggunakan metode skip pada objek kueri Anda. Anda dapat menggunakan Janji dalam Seri untuk memproses semua catatan Anda dalam kumpulan 1000 catatan.

  2. Pada paket gratis Parse, Anda dibatasi hanya membuat 1800 permintaan per menit. Ini berarti Anda tidak dapat menyimpan/memperbarui sejumlah besar catatan dalam rentang waktu singkat.

person Mo Nazemi    schedule 23.12.2015