Мангуста Найти запрос со всеми полями (игнорируя выбор) - PullRequest
0 голосов
/ 25 сентября 2019

В настоящее время я использую Mongoose для производственного проекта, и теперь мы хотим анонимизировать базу данных.Я сделал скрипт, который анонимизирует данные во всей базе данных, но у меня есть проблема.В моих схемах у меня есть несколько полей, которые selected=false.Например, в моей пользовательской схеме поле password не выбрано по умолчанию, потому что я не хотел делать запрос find и возвращать его по ошибке клиенту.

Я делаю следующий шагнезависимо от моей схемы:

  1. Получить все документы модели: const documents = await model.find()
  2. Итерировать по каждому документу: for (const doc of documents)
  3. Вызвать функцию наdocument: const res = await func(doc)
  4. Сохраните результат: await res.save()

Поскольку мой сценарий является общим, я получаю модель и функцию из объекта, чтобы иметь возможность легкодобавьте новые коллекции для анонимизации в моем скрипте:

const anonymizeFunctions = [
  {
    model: models.UserModel,
    func: document => {
      document.password = 'somePass'
      return document
    }
  },
  ...
]

В конце это выглядит примерно так:

const anonymizeFunctions = [
  {
    model: models.UserModel,
    func: document => {
      document.password = 'somePass'
      return document
    }
  },
  ...
]

// This function is call with each element of anonymizeFunctions 
// with the model and func property of the object
async function anonymizeCollection(model, func) {
  const documents = await model.find()
  for (const doc of documents) {
    const res = await func(doc)
    await res.save()
  }
}

Моя проблема в том, что find не выполняется только дляпользователи, но и для всех других моделей, поэтому я не могу model.find().select('+password') к сожалению.Мне нужно полностью игнорировать инструкции select и запрос должен вернуть мне все поля модели, несмотря ни на что.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...