cursor.next(callback) array.next(callback) cursor.next() → promise array.next() → promise
Get the next element in the cursor.
Calling next
the first time on a cursor provides the first element of the cursor. If the data set is exhausted (e.g., you have retrieved all the documents in a table), a ReqlDriverError
error will be passed to the callback when next
is called.
Example: Retrieve the next element.
cursor.next(function(err, row) { if (err) throw err; processRow(row); });
Note: The canonical way to retrieve all the results is to use each or toArray. The next
command should be used only when you may not retrieve all the elements of a cursor or want to delay some operations.
Example: You can retrieve all the elements of a cursor with the next
command using recursion.
query.run( conn, function(err, cursor) { if (err) throw err; var fetchNext = function(err, result) { if (err) { if (((err.name === "ReqlDriverError") && err.message === "No more rows in the cursor.")) { console.log("No more data to process") // If you use one connection per query, the connection should be closed here. // conn.close() } else { throw err; } } else { processRow(result); cursor.next(fetchNext); } } cursor.next(fetchNext); })
Example: With next
, not all results have to be retrieved from a cursor – to stop retrieving results, break out of the recursive function. For example, this recursive function will stop retrieving results when the checkRow
function returns true:
query.run( conn, function(err, cursor) { if (err) throw err; var fetchNext = function(err, result) { if (err) { if (((err.name === "ReqlDriverError") && err.message === "No more rows in the cursor.")) { console.log("No more data to process") // If you use one connection per query, the connection should be closed here. // conn.close() } else { throw err; } } else { if (checkRow(result)) { cursor.next(fetchNext); } else { cursor.close() // If you use one connection per query, the connection should be closed here. // conn.close() } } } cursor.next(fetchNext); })
Example: You can retrieve all the elements of a cursor with the next
command using recursion and promises.
query.run(conn).then(function(cursor) { var errorHandler = function(err) { if (((err.name === "ReqlDriverError") && err.message === "No more rows in the cursor.")) { console.log("No more data to process") // If you use one connection per query, the connection should be closed here. // conn.close() } else { throw err; } } var fetchNext = function(result) { processRow(result); cursor.next().then(fetchNext).error(errorHandler); } cursor.next().then(fetchNext).error(errorHandler); }).error(function(err) { throw err; });
Couldn't find what you were looking for?
© RethinkDB contributors
Licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
https://rethinkdb.com/api/javascript/next/