Skip to content

Queue.findJob

Grant Carthew edited this page Feb 9, 2017 · 11 revisions

Method Signature

Queue.findJob(predicate, raw)

Parameter: predicate Object or Function

  • predicate can be a simple object or a complex function.
  • If a function is passed you are restricted to using RethinkDBs ReQL expressions.

Parameter: raw Boolean

  • True to return raw database data rather than a Job object

Returns: Promise => Array

  • An Array of Job objects or an empty Array.
  • If you set raw, an Array of generic JavaScript objects.

Example:

q.findJob({ email: 'batman@batcave.org' }).then((jobs) => {
  // jobs will either be an empty array
  // or an array of Job objects that have an
  // email property equal to 'batman@batcave.org'
}).catch(err => console.error(err))

Description

One of the most flexible methods on the Queue objects is the Queue.findJob. This method exposes the full and rich filter functionality of the RethinkDB ReQL (RethinkDB Query Language).

Using the Queue.findJob method you can extract information about the jobs in the queue. Here is a quick list of information you could obtain using Queue.findJob.

  • Confirm a job has not already been added to the queue (ensure unique job).
  • Get all jobs related to a common task.
  • Get all failed or terminated jobs.
  • Produce reports on any job data.

Examples

This example shows how to find jobs with a subject property set to finance.

const Queue = require('rethinkdb-job-queue')
const q = new Queue()

let job = q.createJob({ subject: 'finance' })

// findJob will return any job that has job.subject === 'finance'
q.findJob({ subject: 'finance' }).then((financeJobs) => {
  // Do something with the finance jobs here.
}).catch(err => console.error(err))

This example shows how to use a function as the predicate. The function will return all jobs that completed between January 1st, 2012 (included) and January 1st, 2013 (excluded).

const Queue = require('rethinkdb-job-queue')
const q = new Queue()

const predicate = function (job) {
  return job('dateCompleted').during(
    q.r.time(2012, 1, 1, 'Z'), q.r.time(2013, 1, 1, 'Z'))
}

q.findJob(predicate).then((jobs) => {
  // Zero or more jobs in an array.
}).catch(err => console.error(err))

To really understand how powerful this functionality is please read more on the ReQL filter page.

Main

How It Works

Contributing

API

Queue Methods

Queue Properties

Queue Events

Job Methods

Job Properties

Documentation

Clone this wiki locally