ใช้ทริกเกอร์ afterDelete เพื่อแก้ไขผู้ใช้จำนวนมาก

เมื่อลบออบเจ็กต์ใดโดยเฉพาะ ฉันต้องใช้ทริกเกอร์ afterDelete เพื่อลบการอ้างอิงไปยังออบเจ็กต์ที่เพิ่งถูกลบ โดยเฉพาะคลาส User มีคอลัมน์ที่เป็นตัวชี้ไปยังวัตถุประเภทที่เพิ่งถูกลบ ดังนั้นฉันจึงต้องยกเลิกการตั้งค่าคอลัมน์นั้นสำหรับผู้ใช้ที่ตั้งค่านั้นเป็นวัตถุที่เพิ่งถูกลบ เมื่อต้องการทำสิ่งนี้ ฉันกำลังสอบถามผู้ใช้ โดยวนซ้ำผลลัพธ์ของการสืบค้น unseting แอ็ตทริบิวต์ จากนั้นจึงเรียก saveAll ความกังวลของฉันคือผลลัพธ์ของการค้นหาอาจส่งคืนผู้ใช้จำนวนมาก และฉันต้องแน่ใจว่าผู้ใช้ทั้งหมดได้รับการอัปเดต

คำถามของฉันคือทริกเกอร์ Cloud Code มีขีดจำกัดการค้นหาสูงสุด 1,000 รายการหรือไม่ มีวิธีที่ดีกว่าในการยกเลิกการตั้งค่าตัวชี้นี้เมื่อวัตถุนั้นถูกลบหรือไม่? ไม่มีการลบพอยน์เตอร์ไปยังวัตถุที่ถูกลบนี้โดยอัตโนมัติหรือไม่

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 แหล่งที่มา


คำตอบ (1)


มีสองประเด็นหลักที่คุณต้องรู้:

  1. แบบสอบถามแยกวิเคราะห์ส่งกลับระเบียนสูงสุด 1,000 รายการเท่านั้น หากต้องการประมวลผลบันทึกเพิ่มเติม คุณต้องแบ่งหน้าผลลัพธ์โดยใช้วิธี skip บนออบเจ็กต์แบบสอบถามของคุณ คุณสามารถใช้ Promises in Series เพื่อประมวลผลบันทึกทั้งหมดของคุณ เป็นกลุ่มจำนวน 1,000 รายการ

  2. ในแผน Parse ฟรี คุณถูกจำกัดให้ส่งคำขอได้เพียง 1,800 คำขอต่อนาที ซึ่งหมายความว่าคุณไม่สามารถบันทึก/อัปเดตเรคคอร์ดจำนวนมากในช่วงเวลาสั้นๆ ได้

person Mo Nazemi    schedule 23.12.2015