Подтвердить что ты не робот

Mongoose __v свойство - скрыть?

Mongoose добавляет свойство "__v" в Schema для управления версиями - возможно ли отключить это глобально или глобально скрыть его от всех запросов?

4b9b3361

Ответ 1

Вы можете отключить атрибут "__v" в своих определениях схемы, установив для параметра versionKey значение false. Например:

var widgetSchema = new Schema({ ... attributes ... }, { versionKey: false });

Я не думаю, что вы можете отключить их глобально, но можете сделать это только на схему. Подробнее о Schema здесь можно прочитать здесь. Вы также можете найти метод набора схем.

Ответ 3

определите функцию toObject.transform и всегда вызывайте toObject при получении документов из mongoose.

var SomeSchema = new Schema({
    <some schema spec>
  } , {
    toObject: {
      transform: function (doc, ret, game) {
        delete ret.__v;
      }
    }
});

Ответ 4

Два способа:

  • {versionKey: false}

  • когда вы запрашиваете, например model.findById(id).select('-__v')

'-' означает исключение поля

Ответ 5

Попробуйте это, он удалит _v из каждого ответа на запрос.

// transform for sending as json
function omitPrivate(doc, obj) {
    delete obj.__v;
    return obj;
}

// schema options
var options = {
    toJSON: {
        transform: omitPrivate
    }
};
// schema
var Schema = new Schema({...}, options);

Ответ 6

Вы не можете отключить __v, другие ответы содержат несколько ссылок, чтобы ответить, почему вы не должны отключать его.

Я использовал эту библиотеку, чтобы скрыть __v и _id

https://www.npmjs.com/package/mongoose-hidden

let mongooseHidden = require("mongoose-hidden")();

// This will add `id` in toJSON
yourSchema.set("toJSON", {
        virtuals: true,
    });

// This will remove `_id` and `__v` 
yourSchema.plugin(mongooseHidden);

Теперь __v будет существовать, но он не будет возвращен с помощью doc.toJSON().

Надеюсь, что это поможет.

Ответ 7

Да, это просто, просто отредактируйте файл "schema.js", который находится внутри

"node_modules\mongoose\lib"

Найдите "options = utils.options ({ ... versionKey: '__v'..." и измените значение "__v" на false.

Это изменит все почтовые запросы. (versionKey: '__v' => versionKey: false)