Constructs a new Scan instance.
Optionaloptions: ScanOptionsClient instance.
OptionalconcurrentIf set to true, all cluster nodes will be scanned in parallel.
OptionalnobinsIf set to true, the scan will return only meta data, and exclude bins.
Namespace to scan.
OptionalopsOptionalpaginateIf set to true, paginated queries are enabled. In order to receive paginated results, the ScanPolicy#maxRecords property must assign a nonzero integer value.
const Aerospike = require('./lib/aerospike');
// Define host configuration
let config = {
 hosts: '34.213.88.142:3000',
 policies: {
 batchWrite : new Aerospike.BatchWritePolicy({socketTimeout : 0, totalTimeout : 0}),
 }
};
var batchRecords = []
for(let i = 0; i < 30; i++){
 batchRecords.push({
 type: Aerospike.batchType.BATCH_WRITE,
 key: new Aerospike.Key('test', 'demo', 'key' + i),
 ops:[Aerospike.operations.write('exampleBin', i)]
 })
}
;(async function() {
 try {
 client = await Aerospike.connect(config)
 await client.truncate('test', 'demo', 0)
 await client.batchWrite(batchRecords, {socketTimeout : 0, totalTimeout : 0})
 const scan = client.scan('test', 'demo', {paginate: true})
 do {
 const stream = scan.foreach({maxRecords: 11})
 stream.on('error', (error) => { throw error })
 stream.on('data', (record) => {
 console.log(record.bins)
 })
 await new Promise(resolve => {
 stream.on('end', (scanState) => {
 scan.nextPage(scanState)
 console.log(scan.scanState)
 resolve()
 })
 })
 } while (scan.hasNextPage())
 } catch (error) {
 console.error('An error occurred at some point.', error)
 process.exit(1)
 } finally {
 if (client) client.close()
 }
})() const Aerospike = require('./lib/aerospike');
// Define host configuration
let config = {
 hosts: '34.213.88.142:3000',
 policies: {
 batchWrite : new Aerospike.BatchWritePolicy({socketTimeout : 0, totalTimeout : 0}),
 }
};
var batchRecords = []
for(let i = 0; i < 30; i++){
 batchRecords.push({
 type: Aerospike.batchType.BATCH_WRITE,
 key: new Aerospike.Key('test', 'demo', 'key' + i),
 ops:[Aerospike.operations.write('exampleBin', i)]
 })
}
;(async function() {
 try {
 client = await Aerospike.connect(config)
 await client.truncate('test', 'demo', 0)
 await client.batchWrite(batchRecords, {socketTimeout : 0, totalTimeout : 0})
 const scan = client.scan('test', 'demo', {paginate: true})
 let allResults = []
 let results = await scan.results({maxRecords: 11})
 allResults = [...allResults, ...results]
 results = await scan.results({maxRecords: 11})
 allResults = [...allResults, ...results]
 results = await scan.results({maxRecords: 11})
 allResults = [...allResults, ...results]
 console.log("Records returned in total: " + allResults.length) // Should be 30 records
 } catch (error) {
 console.error('An error occurred at some point.', error)
 process.exit(1)
 } finally {
 if (client) client.close()
 }
})() OptionalscanIf set to a valid serialized scan, calling Scan#foreach will allow the next page of records to be queried while preserving the progress of the previous scan. If set to null, calling Scan#foreach will begin a new scan.
OptionalselectedList of bin names to be selected by the scan. If a scan specifies bins to be selected, then only those bins will be returned. If no bins are selected, then all bins will be returned (unless Scan#nobins is set to true).
Use Scan#select to specify the bins to select.
Name of the set to scan.
OptionalttlOptionaludfPerform a read-write background scan and apply a Lua user-defined function (UDF) to each record.
UDF module name.
UDF function name.
OptionaludfArgs: AerospikeBinValue[]Arguments for the function.
Optionalpolicy: policy.ScanPolicyThe Scan Policy to use for this command.
OptionalscanID: numberJob ID to use for the scan; will be assigned randomly if zero or undefined.
A Promise that resolves to a Job instance.
When a background scan is initiated, the client will not wait for results from the database. Instead a Job instance will be returned, which can be used to query the scan status on the database.
UDF module name.
UDF function name.
The function to call when the command completes.
UDF module name.
UDF function name.
Arguments for the function.
The function to call when the command completes.
UDF module name.
UDF function name.
Arguments for the function.
The Scan Policy to use for this command.
The function to call when the command completes.
UDF module name.
UDF function name.
Arguments for the function.
The Scan Policy to use for this command.
Job ID to use for the scan; will be assigned randomly if zero or undefined.
The function to call when the command completes.
Performs a read-only scan on each node in the cluster. As the scan iterates through each partition, it returns the current version of each record to the client.
Optionalpolicy: null | policy.ScanPolicyThe Scan Policy to use for this command.
OptionaldataCb: ((data: AerospikeRecord<B>) => void)The function to call when the command completes with the results of the command; if no callback function is provided, the method returns a Promise instead.
OptionalerrorCb: ((error: Error) => void)Callback function called when there is an error.
OptionalendCb: (() => void)Callback function called when an operation has completed.
Checks compiliation status of a paginated scan.
True if a next page exists, false otherwise
If false is returned, there are no more records left in the scan, and the scan is complete. If true is returned, calling Scan#foreach will continue from the state specified by Scan#scanState.
Sets Scan#scanState to the value specified by the state argument.
serialized scan emitted from the 'error' event.
setter function for the Scan#scanState member variable.
Applies write operations to all matching records.
List of write operations to perform on the matching records.
Optionalpolicy: policy.ScanPolicyThe Scan Policy to use for this command.
OptionalscanID: numberJob ID to use for the scan; will be assigned randomly if zero or undefined.
A Promise that resolves to a Job instance.
Performs a background scan and applies one or more write operations to all records. Neither the records nor the results of the operations are returned to the client. Instead a Job instance will be returned, which can be used to query the scan status.
This method requires server >= 3.7.0.
const Aerospike = require('aerospike')
// INSERT HOSTNAME AND PORT NUMBER OF AEROSPIKE SERVER NODE HERE!
var config = {
 hosts: '192.168.33.10:3000',
 // Timeouts disabled, latency dependent on server location. Configure as needed.
 policies: {
 scan : new Aerospike.ScanPolicy({socketTimeout : 0, totalTimeout : 0})
 }
}
Aerospike.connect(config).then(async (client) => {
 const scan = client.scan('namespace', 'set')
 const ops = [Aerospike.operations.incr('count', 1)]
 const job = await scan.operate(ops)
 await job.waitUntilDone()
 client.close()
}) List of write operations to perform on the matching records.
The Scan Policy to use for this command.
Job ID to use for the scan; will be assigned randomly if zero or undefined.
The function to call when the command completes.
Specify the begin and count of the partitions to be scanned by the scan foreach op.
Start partition number to scan.
Number of partitions from the start to scan.
Optionaldigest: BufferStart from this digest if it is specified.
Executes the Scan and collects the results into an array. On paginated queries, preparing the next page is also handled automatically.
Optionalpolicy: policy.ScanPolicyThe Scan Policy to use for this operation.
This method returns a Promise that contains the scan results as an array of records, when fulfilled. It should only be used if the scan is expected to return only few records; otherwise it is recommended to use Scan#foreach, which returns the results as a RecordStream instead.
If pagination is enabled, the data emitted from the 'error' event will automatically be assigned to Scan#scanState, allowing the next page of records to be queried if Scan#foreach or Scan#results is called.
Specify the names of bins to be selected by the scan.
List of bin names to return.
If a scan specifies bins to be selected, then only those bins will be returned. If no bins are selected, then all bins will be returned. (Unless Scan#nobins is set to true.)
Specify the names of bins to be selected by the scan.
Rest...bins: string[]Spread of bin names to return.
If a scan specifies bins to be selected, then only those bins will be returned. If no bins are selected, then all bins will be returned. (Unless Scan#nobins is set to true.)
Deprecated
since server 6.0
Remarks
The scan object created by calling Client#scan is used for executing record scans on the specified namespace and set (optional). Scans can return a set of records as a RecordStream or apply an Aerospike UDF (user-defined function) on each of the records on the server.
Scan is obsolete in server 6.0
Use query methods implemented by Client#query. For more information, please refer to the section on ⇑Historical evolution of scan features in the Aerospike technical documentation.
Selecting Bins
Using Scan#select it is possible to select a subset of bins which should be returned by the query. If no bins are selected, then the whole record will be returned. If the Scan#nobins property is set to
truethe only the record meta data (ttl, generation, etc.) will be returned.Executing a Scan
A scan is executed using Scan#foreach. The method returns a RecordStream which emits a
dataevent for each record returned by the scan. The scan can be aborted at any time by calling RecordStream#abort.Executing Record UDFs using Background Scans
Record UDFs perform commands on a single record such as updating records based on a set of parameters. Using Scan#background you can run a Record UDF on the result set of a scan. Scans using Records UDFs are run in the background on the server and do not return the records to the client.
For additional information please refer to the section on ⇑Record UDFs in the Aerospike technical documentation.
Scan pagination
Scan pagination allows for queries return records in pages rather than all at once. To enable scan pagination, the scan property Scan#paginate must be true and the previously stated scan policy ScanPolicy#maxRecords must be set to a nonzero positive integer in order to specify a maximum page size.
When a page is complete, RecordStream event 'error' will emit a Scan#scanState object containing a serialized version of the scan. This serialized scan, if be assigned back to Scan#scanState, allows the scan to retrieve the next page of records in the scan upon calling Scan#foreach. If 'error' emits an
undefinedobject, either Scan#paginate is nottrue, or the scan has successfully returned all the specified records.For additional information and examples, please refer to the Scan#paginate section below.
Param: client
A client instance.
Param: ns
The namescape.
Param: set
The name of a set.
Param: options
Scan parameters.
Param: options.select
List of bin names to select. See Scan#select.
Param: options.nobins
Whether only meta data should be returned. See Scan#nobins.
Param: options.concurrent
Whether all cluster nodes should be scanned concurrently. See Scan#concurrent.
Param: options.ttl
The time-to-live (expiration) of the record in seconds. See Scan#ttl.
See
Client#scan to create new instances of this class.
Since
v2.0
Example