Как получить доступ / получить / сохранить предыдущее значение во время ожидания асинхронного изменения цикла (курсор мангуста) - PullRequest
0 голосов
/ 06 октября 2019

Этот вопрос касается поведения QueryCursor и AggregationCursor . У меня есть следующий код в моем проекте.

for (let doc = await collection.next(); doc != null; doc = await collection.next()) {
    console.log(doc)
}

Думаю, мне не нужно объяснять вам, что он делает. Так что вопрос в следующем:

Как получить доступ к предыдущему документу / значению во время итерации курсора?

Когда мы перебираем массив документов с помощью for или .forEach мы всегда могли получить доступ к предыдущему значению. Из-за индекса элемента массива. Но когда мы перебираем документы с помощью курсора, мы ничего не получаем, потому что это больше относится к for await.. of loop

Случай:

Я "собираю" необходимые данные во время этого цикладокументов. (Поверьте мне, в моем случае это лучше, чем aggregation). На данный момент, единственное решение, которое я нашел, - хранить необходимое doc (уникальное) значение в специальном массиве во время цикла. Вот так.

let array = []
for (let doc = await collection.next(); doc != null; doc = await collection.next()) {
    if (array.indexOf(doc.value) === -1) {
        array.push(doc.value)
    }
}

Так что я мог легко получить доступ к необходимому значению и сравнить его (если оно мне тоже понадобилось) с doc.value внутри / во время цикла cursor. Но, возможно, у кого-то есть лучший опыт / вариант с этим? Особенно, если в коллекции много уникальных значений (полей документа).

...