Spec-Zone.ru › RethinkDB javascript

Команда ReQL: EventEmitter (курсор)

Синтаксис команды

cursor.addListener(event, listener)
cursor.on(event, listener)
cursor.once(event, listener)
cursor.removeListener(event, listener)
cursor.removeAllListeners([event])
cursor.setMaxListeners(n)
cursor.listeners(event)
cursor.emit(event, [arg1], [arg2], [...])

Описание

Курсоры и фиды реализуют тот же интерфейс, что и EventEmitter в Node.js: EventEmitter.

  • Могут быть выпущены два события: data и error.
  • После начала использования интерфейса EventEmitter, другие команды курсоров RethinkDB, такие как next, toArray, и each, больше недоступны.
  • В первый раз при вызове метода EventEmitter, курсор или фид будут передавать данные сразу после обратных вызовов событий ввода-вывода и до обратных вызовов setTimeout и setInterval.

Пример: Трансляция всех сообщений с помощью socket.io.

r.table("messages").orderBy({index: "date"}).run(conn, function(err, cursor) {
    if (err) {
        // Handle error
        return
    }

    cursor.on("error", function(error) {
        // Handle error
    })
    cursor.on("data", function(message) {
        socket.broadcast.emit("message", message)
    })
});

Этот запрос можно переписать с помощью команды each:

r.table("messages").orderBy({index: "date"}).run(conn, function(err, cursor) {
    if (err) {
        // Handle error
        return
    }
    
    cursor.each(function(error, message) {
        if(error) {
            // Handle error
        }
        socket.broadcast.emit("message", message)
    })
});

Пример: Трансляция всех вставленных сообщений.

r.table("messages").changes().filter({old_val: null}).run(conn, function(err, feed) {
    if (err) {
        // Handle error
        return
    }

    feed.on("error", function(error) {
        // Handle error
    })
    feed.on("data", function(newMessage) {
        socket.broadcast.emit("message", newMessage)
    })
});

Связанные команды

  • next
  • each

© RethinkDB contributors
Licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
https://rethinkdb.com/api/javascript/ee-cursor/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API