Запрос манго на коллекцию LokiJs изменяет размер коллекции - PullRequest
0 голосов
/ 15 октября 2018

Я использую LokiJs в качестве кеша в памяти для приложения, которое хранит данные в CouchDB и позволяет получать данные через сервер NodeJS.Согласно документации о построении запросов , результаты моего запроса присваиваются объекту набора результатов:

let result = combinedCache.find({'left.errorCode': errorCode});

Эта коллекция combinedCache является результатом .eqJoin из двухдругие коллекции:

    var cache = new loki('loki.db');

    errorCodeCache = cache.addCollection('errorCodes');
    messageCache = cache.addCollection('messages');
    errorCodeCache.insert(docs.errorCodes);
    messageCache.insert(docs.messages);
    combinedCache = errorCodeCache.eqJoin(
        messageCache,
        'messageId',
        '_id'
    );

Это создает две коллекции: коллекцию errorCodeCache и коллекцию messageCache.combinedCache является результатом объединения в messageId документов errorCode и _id документов сообщений.Размер получаемого combinedCache значительно превышает 1000, когда я проверяю с помощью combinedCache.data().length.

Однако после выполнения запроса к кешу размер исходной коллекции изменяется на размер результата;другими словами, если мой запрос возвращает 1 документ CouchDB, размер combinedCache теперь равен 1. Я не смог найти никаких ссылок в документации, в которой говорилось, что запросы .find к коллекции изменяют результаты самой коллекции.Если это так, то как можно сохранить размер коллекции?Спасибо!

1 Ответ

0 голосов
/ 15 октября 2018

Для всех, кто видит это, мне удалось выяснить это с помощью этой статьи .

// branch just long enough to determine count of customers under 30 without filter affecting irishCustomers results
var lt30count = irishCustomers.copy().find({ ‘age’: { ‘$lt’ : 30 }).data().length;

Поэтому решение состоит в добавлении .copy() для создания временной копииданные, если вы не хотите, чтобы фильтр изменял коллекцию.

...