在插入或更新之前更改/验证属性
Change / validate properties before insert or update
我正在尝试在插入和更新之前对数据进行一些自定义验证/清理。
我认为模型的生命周期回调是这类工作的好地方:
module.exports = {
// Before saving a value.
// Fired before an `insert` or `update` query.
beforeSave: async (model) => {
console.log('[beforeSave]', 'model', model)
// Do something here with the model
},
// Before creating a value.
// Fired before an `insert` query.
beforeCreate: async (model) => {
console.log('[beforeCreate]', 'model', model)
// Do something here with the model
},
// Before updating a value.
// Fired before an `update` query.
beforeUpdate: async (model) => {
console.log('[beforeUpdate]', 'model', model)
// Do something here with the model
}
};
当我插入一条新记录时,beforeSave
和 beforeCreate
方法都会被调用。本例中的模型是我要插入的新对象。
当我更新记录时,beforeSave
方法没有被调用,beforeUpdate
方法被调用但模型不是我想要保存的对象。在这种情况下,模型是一个 Query
对象。
这是验证的最佳位置吗?
如果可以,我如何在更新前修改对象?
我正在使用 Strapi v3.0.0-beta.16.3 MongoDB。
以下是我建议您管理生命周期的方法。
管理 slug
的示例
// const slugify = require('slugify');
beforeSave: async (model) => {
if (model.title) {
model.slug = slugify(model.title);
}
},
beforeUpdate: async (model) => {
if (model.getUpdate().title) {
model.update({
slug: slugify(model.getUpdate().title)
});
}
},
对于 SQL 连接,这将是选项:
beforeSave: async (model) => {
if (model.get('title')) {
model.set({slug: slugify(model.get('title'))});
}
},
我正在尝试在插入和更新之前对数据进行一些自定义验证/清理。 我认为模型的生命周期回调是这类工作的好地方:
module.exports = {
// Before saving a value.
// Fired before an `insert` or `update` query.
beforeSave: async (model) => {
console.log('[beforeSave]', 'model', model)
// Do something here with the model
},
// Before creating a value.
// Fired before an `insert` query.
beforeCreate: async (model) => {
console.log('[beforeCreate]', 'model', model)
// Do something here with the model
},
// Before updating a value.
// Fired before an `update` query.
beforeUpdate: async (model) => {
console.log('[beforeUpdate]', 'model', model)
// Do something here with the model
}
};
当我插入一条新记录时,beforeSave
和 beforeCreate
方法都会被调用。本例中的模型是我要插入的新对象。
当我更新记录时,beforeSave
方法没有被调用,beforeUpdate
方法被调用但模型不是我想要保存的对象。在这种情况下,模型是一个 Query
对象。
这是验证的最佳位置吗?
如果可以,我如何在更新前修改对象?
我正在使用 Strapi v3.0.0-beta.16.3 MongoDB。
以下是我建议您管理生命周期的方法。 管理 slug
的示例// const slugify = require('slugify');
beforeSave: async (model) => {
if (model.title) {
model.slug = slugify(model.title);
}
},
beforeUpdate: async (model) => {
if (model.getUpdate().title) {
model.update({
slug: slugify(model.getUpdate().title)
});
}
},
对于 SQL 连接,这将是选项:
beforeSave: async (model) => {
if (model.get('title')) {
model.set({slug: slugify(model.get('title'))});
}
},