Skip to content

Conditional Delivery of Updated Objects

Consider a data table called Order. The table contains a column named orderAmount. The code below adds a listener for the update event for the Order table.

EventHandlerForClass *eventHandler = [Backendless.shared.data of:[Order class]].rt;
RTSubscription *subscription = [eventHandler addUpdateListenerWithWhereClause:@"orderAmount > 1000" responseHandler:^(Order *updatedObject) {
    NSLog(@"Order with orderAmount > 1000 has been updated: %@", updatedObject);
} errorHandler:^(Fault *fault) {
    NSLog(@"Error: %@", fault.message);
}];
let eventHandler = Backendless.shared.data.of(Order.self).rt
let subscription = eventHandler?.addUpdateListener(whereClause: "orderAmount > 1000", responseHandler: { updatedObject in
    print("Order with orderAmount > 1000 has been updated: \(updatedObject)")
}, errorHandler: { fault in
    print("Error: \(fault.message ?? "")")
})

EventHandlerForMap *eventHandler = [Backendless.shared.data ofTable:@"Order"].rt;
RTSubscription *subscription = [eventHandler addUpdateListenerWithWhereClause:@"orderAmount > 1000" responseHandler:^(NSDictionary *updatedObject) {
    NSLog(@"Order with orderAmount > 1000 has been updated: %@", updatedObject);
} errorHandler:^(Fault *fault) {
    NSLog(@"Error: %@", fault.message);
}];
let eventHandler = Backendless.shared.data.ofTable("Order").rt
let subscription = eventHandler?.addUpdateListener(whereClause: "orderAmount > 1000", responseHandler: { updatedObject in
    print("Order with orderAmount > 1000 has been updated: \(updatedObject)")
}, errorHandler: { fault in
    print("Error: \(fault.message ?? "")")
})

The event listener will receive only the Order objects which are being updated in the database where the amount of order is greater than 1000. This is achieved with the first argument in the addUpdateListener method. The argument is a where clause condition, which references the orderAmount column and requests that the real-time database sends only the matching objects. The second argument is a callback object which will receive any updated object which matches the where clause condition. Notice the argument of the response callback method is the actual object updated in the database.

For more information about the whereClause syntax, see the Condition Syntax section of the guide.