Настроить имя ключа __v
Да, мы можем изменить __v
имя ключа по умолчанию на любое другое versionKey
var TemplateSchema = new mongoose.Schema(
{
platform: String,
templateRevision: String,
tests: [Test.schema]
},
{ versionKey: 'version' }
);
Версия с автоматическим приращением
ниже промежуточное ПО будет вызывать перед операцией и обновлять инкрементную версию,
- Увеличение, когда
save()
, this
относится к документу объекту
TemplateSchema.pre('save', function(next) {
this.increment();
return next();
});
- приращение, когда
updateMany()
, this
относится к запросу объекту
TemplateSchema.pre('updateMany', function(next) {
this.updateMany({}, { $inc: { version: 1 } });
return next()
});
Таким же образом вы можете создать промежуточное ПО для других методы update()
, updateOne()
, findOneAndUpdate()
, findAndModify()
и et c.
- мы работаем в файле Template. js, и, наконец, вам нужно создать модель для схема и экспорт, которые вы уже сделали.
module.exports = mongoose.model('Template', TemplateSchema);
Примеры
const Template = require('./Template'); // manage path of Template.js
let doc = Template.findOne({ _id: "5f299bdbf045394388fc1461" });
doc.platform = "test platform";
doc.save(); // before this, `save` middleware will call and auto increment version by 1
- обновить несколько документов
Template.updateMany(
{ platform: "test platform" },
{ $set: { platform: "demo platform" } }
);
// before this, `updateMany` middleware will call and increment version by 1