Как не выбирать поля, которые не определены в схеме? - PullRequest
0 голосов
/ 06 июля 2018

Я хотел бы использовать одну коллекцию для двух схем Например: Документ в БД:

{
  "name":"John",
  "position":"CEO"
}

Схема User:

{
  "name" : String
}

Схема Employee:

{
  "name" : String,
  "position" : String
}

Тем не менее, при выборе пользователя (User.findById()) в результате я вижу все поля документа, даже не определенные в схеме. Я вообще не хочу раскрывать некоторые поля в урезанной модели, поэтому select: false для таких полей не то, что я ищу ... Также я хотел бы запретить сохранение любых полей, не перечисленных в схеме.

Можно ли определить схему таким образом?

Или я ошибаюсь и select:false это именно то, что я ищу? :-)

Я использую Mongoose 5.0.14, но не проблема обновить его до последней версии, если это поможет.

Я видел вопрос Как выбрать одно поле в MongoDB? , но я хочу, чтобы ODM сделал это для меня.

Ответы [ 2 ]

0 голосов
/ 06 июля 2018

попробуйте это в вашей схеме

 MySchema.pre('find', function() {
    this.select(fileds);
});
0 голосов
/ 06 июля 2018

Попробуй это. :)

var fields = Object.keys(yourSchema.paths).join(' ');

//and when execute a query
User.find({}).select(fields).exec(callback);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...