Optional
options: EventEmitterOptionsOptional
Static
Readonly
captureStatic
captureStatic
defaultStatic
Readonly
errorThis symbol shall be used to install a listener for only monitoring 'error'
events. Listeners installed using this symbol are called before the regular
'error'
listeners are called.
Installing a listener using this symbol does not change the behavior once an
'error'
event is emitted, therefore the process will still crash if no
regular 'error'
listener is installed.
Optional
[captureAdd a cursor flag to the cursor
The flag to set, must be one of following ['tailable', 'oplogReplay', 'noCursorTimeout', 'awaitData', 'partial' -.
The flag boolean value.
Add a query modifier to the cursor query
Allows disk use for blocking sort operations exceeding 100MB memory. (MongoDB 3.2 or higher)
Optional
allow: booleanOptional
Set the batch size for the cursor.
The number of documents to return per batch. See command documentation.
Returns a new uninitialized copy of this cursor, with options matching those that have been set on the current instance
Set the collation options for the cursor.
The cursor collation options (MongoDB 3.4 or higher) settings for update operation (see 3.4 documentation for available fields).
Add a comment to the cursor query allowing for tracking the comment in the log.
The comment attached to this query.
Get the count of documents for this cursor
Optional
options: CountOptionsOptional
Use collection.estimatedDocumentCount
or collection.countDocuments
instead
Rest
...args: Parameters<AbstractCursorEvents[EventKey]>Rest
Set the cursor query
Iterates over all the documents for this cursor using the iterator, callback pattern.
If the iterator returns false
, iteration will stop.
The iteration callback.
Set the cursor hint
If specified, then the query system will only consider plans using the hinted index.
Set the limit for the cursor.
The limit for the cursor query.
Map all documents using the provided function If there is a transform set on the cursor, that will be called first and the result passed to this function's transform.
The mapping transformation method.
Note Cursors use null
internally to indicate that there are no more documents in the cursor. Providing a mapping
function that maps values to null
will result in the cursor closing itself before it has finished iterating
all documents. This will not result in a memory leak, just surprising behavior. For example:
const cursor = collection.find({});
cursor.map(() => null);
const documents = await cursor.toArray();
// documents is always [], regardless of how many documents are in the collection.
Other falsey values are allowed:
const cursor = collection.find({});
cursor.map(() => '');
const documents = await cursor.toArray();
// documents is now an array of empty strings
Note for Typescript Users: adding a transform changes the return type of the iteration of this cursor, it does not return a new instance of a cursor. This means when calling map, you should always assign the result to a new variable in order to get a correctly typed cursor variable. Take note of the following example:
const cursor: FindCursor<Document> = coll.find();
const mappedCursor: FindCursor<number> = cursor.map(doc => Object.keys(doc).length);
const keyCounts: number[] = await mappedCursor.toArray(); // cursor.toArray() still returns Document[]
Set the cursor max
Set a maxAwaitTimeMS on a tailing cursor query to allow to customize the timeout value for the option awaitData (Only supported on MongoDB 3.2 or higher, ignored otherwise)
Number of milliseconds to wait before aborting the tailed query.
Set a maxTimeMS on the cursor query, allowing for hard timeout limits on queries (Only supported on MongoDB 2.6 or higher)
Number of milliseconds to wait before aborting the query.
Set the cursor min
Add a project stage to the aggregation pipeline
In order to strictly type this function you must provide an interface that represents the effect of your projection on the result documents.
By default chaining a projection to your cursor changes the returned type to the generic Document type. You should specify a parameterized type to have assertions on your final results.
// Best way
const docs: FindCursor<{ a: number }> = cursor.project<{ a: number }>({ _id: 0, a: true });
// Flexible way
const docs: FindCursor<Document> = cursor.project({ _id: 0, a: true });
const cursor: FindCursor<{ a: number; b: string }> = coll.find();
const projectCursor = cursor.project<{ a: number }>({ _id: 0, a: true });
const aPropOnlyArray: {a: number}[] = await projectCursor.toArray();
// or always use chaining and save the final cursor
const cursor = coll.find().project<{ a: string }>({
_id: 0,
a: { $convert: { input: '$a', to: 'string' }
}});
Optional
event: string | symbol | EventKeyOptional
Set the cursor returnKey. If set to true, modifies the cursor to only return the index field or fields for the results of the query, rather than documents. If set to true and the query does not use an index to perform the read operation, the returned documents will not contain any fields.
the returnKey value.
Modifies the output of a query by adding a field $recordId to matching documents. $recordId is the internal key which uniquely identifies a document in a collection.
The $showDiskLoc option has now been deprecated and replaced with the showRecordId field. $showDiskLoc will still be accepted for OP_QUERY stye find.
Set the skip for the cursor.
The skip for the cursor query.
Sets the sort order of the cursor query.
The key or keys set for the sort.
Optional
direction: SortDirectionThe direction of the sorting (1 or -1).
Optional
Optional
options: CursorStreamOptionsOptional
Returns an array of documents. The caller is responsible for making sure that there is enough memory to store the results. Note that the array only contains partial results when this cursor had been previously accessed. In that case, cursor.rewind() can be used to reset the cursor.
Set the ReadPreference for the cursor.
Set the ReadPreference for the cursor.
The new read preference for the cursor.
Static
getReturns a copy of the array of listeners for the event named eventName
.
For EventEmitter
s this behaves exactly the same as calling .listeners
on
the emitter.
For EventTarget
s this is the only way to get the event listeners for the
event target. This is useful for debugging and diagnostic purposes.
import { getEventListeners, EventEmitter } from 'node:events';
{
const ee = new EventEmitter();
const listener = () => console.log('Events are fun');
ee.on('foo', listener);
getEventListeners(ee, 'foo'); // [listener]
}
{
const et = new EventTarget();
const listener = () => console.log('Events are fun');
et.addEventListener('foo', listener);
getEventListeners(et, 'foo'); // [listener]
}
v15.2.0
Static
listenerA class method that returns the number of listeners for the given eventName
registered on the given emitter
.
import { EventEmitter, listenerCount } from 'node:events';
const myEmitter = new EventEmitter();
myEmitter.on('event', () => {});
myEmitter.on('event', () => {});
console.log(listenerCount(myEmitter, 'event'));
// Prints: 2
The emitter to query
The event name
v0.9.12
Since v3.2.0 - Use listenerCount
instead.
Static
onimport { on, EventEmitter } from 'node:events';
(async () => {
const ee = new EventEmitter();
// Emit later on
process.nextTick(() => {
ee.emit('foo', 'bar');
ee.emit('foo', 42);
});
for await (const event of on(ee, 'foo')) {
// The execution of this inner block is synchronous and it
// processes one event at a time (even with await). Do not use
// if concurrent execution is required.
console.log(event); // prints ['bar'] [42]
}
// Unreachable here
})();
Returns an AsyncIterator
that iterates eventName
events. It will throw
if the EventEmitter
emits 'error'
. It removes all listeners when
exiting the loop. The value
returned by each iteration is an array
composed of the emitted event arguments.
An AbortSignal
can be used to cancel waiting on events:
import { on, EventEmitter } from 'node:events';
const ac = new AbortController();
(async () => {
const ee = new EventEmitter();
// Emit later on
process.nextTick(() => {
ee.emit('foo', 'bar');
ee.emit('foo', 42);
});
for await (const event of on(ee, 'foo', { signal: ac.signal })) {
// The execution of this inner block is synchronous and it
// processes one event at a time (even with await). Do not use
// if concurrent execution is required.
console.log(event); // prints ['bar'] [42]
}
// Unreachable here
})();
process.nextTick(() => ac.abort());
The name of the event being listened for
Optional
options: StaticEventEmitterOptionsOptional
that iterates eventName
events emitted by the emitter
v13.6.0, v12.16.0
Static
onceCreates a Promise
that is fulfilled when the EventEmitter
emits the given
event or that is rejected if the EventEmitter
emits 'error'
while waiting.
The Promise
will resolve with an array of all the arguments emitted to the
given event.
This method is intentionally generic and works with the web platform EventTarget interface, which has no special'error'
event
semantics and does not listen to the 'error'
event.
import { once, EventEmitter } from 'node:events';
async function run() {
const ee = new EventEmitter();
process.nextTick(() => {
ee.emit('myevent', 42);
});
const [value] = await once(ee, 'myevent');
console.log(value);
const err = new Error('kaboom');
process.nextTick(() => {
ee.emit('error', err);
});
try {
await once(ee, 'myevent');
} catch (err) {
console.log('error happened', err);
}
}
run();
The special handling of the 'error'
event is only used when events.once()
is used to wait for another event. If events.once()
is used to wait for the
'error'
event itself, then it is treated as any other kind of event without
special handling:
import { EventEmitter, once } from 'node:events';
const ee = new EventEmitter();
once(ee, 'error')
.then(([err]) => console.log('ok', err.message))
.catch((err) => console.log('error', err.message));
ee.emit('error', new Error('boom'));
// Prints: ok boom
An AbortSignal
can be used to cancel waiting for the event:
import { EventEmitter, once } from 'node:events';
const ee = new EventEmitter();
const ac = new AbortController();
async function foo(emitter, event, signal) {
try {
await once(emitter, event, { signal });
console.log('event emitted!');
} catch (error) {
if (error.name === 'AbortError') {
console.error('Waiting for the event was canceled!');
} else {
console.error('There was an error', error.message);
}
}
}
foo(ee, 'foo', ac.signal);
ac.abort(); // Abort waiting for the event
ee.emit('foo'); // Prints: Waiting for the event was canceled!
Optional
options: StaticEventEmitterOptionsOptional
v11.13.0, v10.16.0
Optional
options: StaticEventEmitterOptionsOptional
Static
setimport {
setMaxListeners,
EventEmitter
} from 'node:events';
const target = new EventTarget();
const emitter = new EventEmitter();
setMaxListeners(5, target, emitter);
Optional
n: numberA non-negative number. The maximum number of listeners per EventTarget
event.
Optional
Rest
...eventTargets: (EventEmitter<DefaultEventMap> | DOMEventTarget)[]Zero or more {EventTarget} or {EventEmitter} instances. If none are specified, n
is set as the default max for all newly created {EventTarget} and {EventEmitter}
objects.
Rest
v15.4.0
Static
Readonly
CLOSEGenerated using TypeDoc
Sets or gets the default captureRejection value for all emitters.