Class ChangeStream<TSchema, TChange>

Creates a new Change Stream instance. 创建一个新的变更流实例。Normally created using Collection.watch().通常使用Collection.watch()创建。

Type Parameters

Hierarchy

Properties

namespace: MongoDBNamespace
options: ChangeStreamOptions & {
    writeConcern?: undefined;
}

Type declaration

  • Optional writeConcern?: undefined

Remarks

WriteConcern can still be present on the options because we inherit options from the client/db/collection. WriteConcern仍然可以出现在选项上,因为我们从客户端/db/集合继承了选项。The key must be present on the options in order to delete it. 键必须存在于选项中才能删除它。This allows typescript to delete the key but will not allow a writeConcern to be assigned as a property on options.这允许typescript删除键,但不允许将writeConcern分配为选项的属性。

pipeline: Document[]
streamOptions?: CursorStreamOptions
type: symbol
CHANGE: "change" = CHANGE

Fired for each new matching change in the specified namespace. 为指定命名空间中的每个新匹配更改激发。Attaching a change event listener to a Change Stream will switch the stream into flowing mode. change事件侦听器附加到更改流将使流切换到流动模式。Data will then be passed as soon as it is available.一旦数据可用,就会立即传递。

Event

CLOSE: "close" = CLOSE

Event

END: "end" = END

Event

ERROR: "error" = ERROR

Event

INIT: "init" = INIT

Event

MORE: "more" = MORE

Event

RESPONSE: "response" = RESPONSE

Event

RESUME_TOKEN_CHANGED: "resumeTokenChanged" = RESUME_TOKEN_CHANGED

Emitted each time the change stream stores a new resume token.每次更改流存储新的恢复令牌时发出。

Event

captureRejectionSymbol: typeof captureRejectionSymbol
captureRejections: boolean

Sets or gets the default captureRejection value for all emitters.设置或获取所有发射器的默认captureRejection值。

defaultMaxListeners: number
errorMonitor: typeof errorMonitor

This 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.在调用常规'error'侦听器之前,将调用使用此符号安装的侦听器。

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.一旦发出'error'事件,使用此符号安装侦听器不会改变行为,因此,如果未安装常规的'error'侦听器,进程仍将崩溃。

Accessors

  • get resumeToken(): unknown
  • The cached resume token that is used to resume after the most recently returned change.缓存的恢复令牌,用于在最近返回的更改之后恢复。

    Returns unknown

Methods

  • Returns AsyncGenerator<TChange, void, void>

  • Type Parameters

    • EventKey extends "error" | "close" | "response" | "more" | "init" | "change" | "end" | "resumeTokenChanged"

    Parameters

    • event: symbol | EventKey
    • Rest ...args: Parameters<ChangeStreamEvents<TSchema, TChange>[EventKey]>

    Returns boolean

  • Check if there is any document still available in the Change Stream检查变更流中是否还有可用的文档

    Returns Promise<boolean>

  • Type Parameters

    • EventKey extends "error" | "close" | "response" | "more" | "init" | "change" | "end" | "resumeTokenChanged"

    Parameters

    • type: string | symbol | EventKey

    Returns number

  • Get the next available document from the Change Stream.从变更流中获取下一个可用文档。

    Returns Promise<TChange>

  • Return a modified Readable stream including a possible transform method.返回一个修改后的Readable流,其中包括一个可能的转换方法。

    NOTE: When using a Stream to process change stream events, the stream will NOT automatically resume in the case a resumable error is encountered.注意:当使用流处理更改流事件时,如果遇到可恢复的错误,流将不会自动恢复。

    Parameters

    Returns Readable & AsyncIterable<TChange>

    Throws

    MongoChangeStreamError if the underlying cursor or the change stream is closed如果基础游标或更改流已关闭则抛出MongoChangeStreamError

  • Try to get the next available document from the Change Stream's cursor or null if an empty batch is returned尝试从更改流的游标获取下一个可用文档,如果返回空批,则为null

    Returns Promise<null | TChange>

  • Returns a copy of the array of listeners for the event named eventName.返回名为eventName的事件的侦听器数组的副本。

    For EventEmitters this behaves exactly the same as calling .listeners on the emitter.对于EventEmitter,其行为与在发射器上调用侦听器完全相同。

    For EventTargets this is the only way to get the event listeners for the event target. 对于EventTarget,这是获取事件目标的事件侦听器的唯一方法。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);
    console.log(getEventListeners(ee, 'foo')); // [ [Function: listener] ]
    }
    {
    const et = new EventTarget();
    const listener = () => console.log('Events are fun');
    et.addEventListener('foo', listener);
    console.log(getEventListeners(et, 'foo')); // [ [Function: listener] ]
    }

    Parameters

    • emitter: EventEmitter | _DOMEventTarget
    • name: string | symbol

    Returns Function[]

    Since

    v15.2.0, v14.17.0

  • A class method that returns the number of listeners for the given eventNameregistered on the given emitter.一个类方法,用于返回在给定emitter上注册的给定eventName的侦听器数。

    import { EventEmitter, listenerCount } from 'node:events';

    const myEmitter = new EventEmitter();
    myEmitter.on('event', () => {});
    myEmitter.on('event', () => {});
    console.log(listenerCount(myEmitter, 'event'));
    // Prints: 2

    Parameters

    • emitter: EventEmitter

      The emitter to query要查询的发射器

    • eventName: string | symbol

      The event name事件名称

    Returns number

    Since

    v0.9.12

    Deprecated

    Since v3.2.0 - Use listenerCount instead.请改用listenerCount

  • import { on, EventEmitter } from 'node:events';
    import process from 'node:process';

    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. 返回一个迭代eventName事件的AsyncIteratorIt will throw if the EventEmitter emits 'error'. 如果EventEmitter发出'error',它将抛出。It removes all listeners when exiting the loop. 它在退出循环时删除所有侦听器。The value returned by each iteration is an array composed of the emitted event arguments.每次迭代返回的value是一个由发出的事件参数组成的数组。

    An AbortSignal can be used to cancel waiting on events:AbortSignal可用于取消等待事件:

    import { on, EventEmitter } from 'node:events';
    import process from 'node:process';

    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());

    Parameters

    • emitter: EventEmitter
    • eventName: string

      The name of the event being listened for

    • Optional options: StaticEventEmitterOptions

    Returns AsyncIterableIterator<any>

    that iterates eventName events emitted by the emitter

    Since

    v13.6.0, v12.16.0

  • Creates a Promise that is fulfilled when the EventEmitter emits the given event or that is rejected if the EventEmitter emits 'error' while waiting.创建一个Promise,该Promise在EventEmitter发出给定事件时实现,或者如果EventEmitter在等待时发出“error”则被拒绝。 The Promise will resolve with an array of all the arguments emitted to the given event.Promise将通过向给定事件发出的所有参数的数组进行解析。

    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.此方法是有意通用的,可与web平台EventTarget接口配合使用,该接口没有特殊的'error'事件语义,也不侦听'error'消息。

    import { once, EventEmitter } from 'node:events';
    import process from 'node:process';

    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.error('error happened', err);
    }

    The special handling of the 'error' event is only used when events.once()is used to wait for another event. 'error'事件的特殊处理仅在events.once()用于等待另一个事件时使用。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:如果events.once()用于等待'error'事件本身,那么它将被视为任何其他类型的事件,而无需特殊处理:

    import { EventEmitter, once } from 'node:events';

    const ee = new EventEmitter();

    once(ee, 'error')
    .then(([err]) => console.log('ok', err.message))
    .catch((err) => console.error('error', err.message));

    ee.emit('error', new Error('boom'));

    // Prints: ok boom

    An AbortSignal can be used to cancel waiting for the event:AbortSignal可用于取消等待事件:

    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!打印:等待活动已取消!

    Parameters

    • emitter: _NodeEventTarget
    • eventName: string | symbol
    • Optional options: StaticEventEmitterOptions

    Returns Promise<any[]>

    Since

    v11.13.0, v10.16.0

  • Parameters

    • emitter: _DOMEventTarget
    • eventName: string
    • Optional options: StaticEventEmitterOptions

    Returns Promise<any[]>

  • import { setMaxListeners, EventEmitter } from 'node:events';

    const target = new EventTarget();
    const emitter = new EventEmitter();

    setMaxListeners(5, target, emitter);

    Parameters

    • Optional n: number

      A non-negative number. The maximum number of listeners per EventTarget event.一个非负数。每个EventTarget事件的最大侦听器数。

    • Rest ...eventTargets: (EventEmitter | _DOMEventTarget)[]

    Returns void

    Since

    v15.4.0

Generated using TypeDoc