无法在 Strapi 模型中调用生命周期方法?
Unable to call lifecycle methods in Strapi models?
我有一个带有 MongoDB 数据库和一个简单 Post
模型的 Strapi 项目。除其他外,该模型还有一个具有以下属性的 slug
字段:
type: string,
unique: true,
required: true
出于测试目的,我试图在通过 Strapi 的生命周期方法之一将其提交给数据库之前修改该字段的值:
module.exports = {
// Before saving a value.
// Fired before an `insert` or `update` query.
beforeSave: async (model) => {
// Set the password.
const newslug = model.slug + '-test';
model.slug = newslug;
},
};
但是当我在我的管理页面上 save
a post 时,该方法似乎并没有像预期的那样被触发。 post 连同它的 slug
被更新到数据库中,没有上面代码中显示的修改。我误解了功能吗?
如果您使用的是 NoSQL 数据库 (Mongo)
beforeSave: async (model) => {
if (model.content) {
model.wordCount = model.content.length;
}
},
beforeUpdate: async (model) => {
if (model.getUpdate().content) {
model.update({
wordCount: model.getUpdate().content.length
});
}
},
如果您正在使用 SQL(SQLite、Postgres、MySQL)
beforeSave: async (model, attrs, options) => {
if (attrs.content) {
attrs.wordCount = attrs.content.length;
}
},
我有一个带有 MongoDB 数据库和一个简单 Post
模型的 Strapi 项目。除其他外,该模型还有一个具有以下属性的 slug
字段:
type: string,
unique: true,
required: true
出于测试目的,我试图在通过 Strapi 的生命周期方法之一将其提交给数据库之前修改该字段的值:
module.exports = {
// Before saving a value.
// Fired before an `insert` or `update` query.
beforeSave: async (model) => {
// Set the password.
const newslug = model.slug + '-test';
model.slug = newslug;
},
};
但是当我在我的管理页面上 save
a post 时,该方法似乎并没有像预期的那样被触发。 post 连同它的 slug
被更新到数据库中,没有上面代码中显示的修改。我误解了功能吗?
如果您使用的是 NoSQL 数据库 (Mongo)
beforeSave: async (model) => {
if (model.content) {
model.wordCount = model.content.length;
}
},
beforeUpdate: async (model) => {
if (model.getUpdate().content) {
model.update({
wordCount: model.getUpdate().content.length
});
}
},
如果您正在使用 SQL(SQLite、Postgres、MySQL)
beforeSave: async (model, attrs, options) => {
if (attrs.content) {
attrs.wordCount = attrs.content.length;
}
},