Mongoose добавляет свойство "__v" в Schema для управления версиями - возможно ли отключить это глобально или глобально скрыть его от всех запросов?
Mongoose __v свойство - скрыть?
Ответ 1
Вы можете отключить атрибут "__v" в своих определениях схемы, установив для параметра versionKey значение false. Например:
var widgetSchema = new Schema({ ... attributes ... }, { versionKey: false });
Я не думаю, что вы можете отключить их глобально, но можете сделать это только на схему. Подробнее о Schema здесь можно прочитать здесь. Вы также можете найти метод набора схем.
Ответ 2
Чтобы отключить свойство '__v', которое не рекомендуется, используйте versionKey:
var Schema = new Schema({...}, { versionKey: false });
Чтобы скрыть его от всех запросов, которые иногда могут быть не то, что вы хотите тоже, используйте select параметр типа схемы:
var Schema = new Schema({ __v: { type: Number, select: false}})
Ответ 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)