我尝试在插入和更新之前对数据进行一些自定义验证/清理。 我认为模型的生命周期回调是进行此类工作的好地方:
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
对象。
这是进行验证的最佳地点吗?
如果是的话,如何在更新之前修改对象?
我在MongoDB上使用Strapi v3.0.0-beta.16.3。
答案 0 :(得分:3)
这是我建议您管理自己的生命周期的方法。 管理子弹的例子
// 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'))});
}
},