我的Strapi项目设置为在每次保存或更新博客帖子时更新一个名为readTime
的不可用户编辑的字段:
function readTime(str) {
let newStr = h2p(markdown.toHTML(str));
newStr = newStr.replace(/(\W+ )|(\d+)|(\.+)/g, ' ');
newStr = newStr.replace(/\s+/g, ' ');
newStr = newStr.trim().split(/[\s-]+/);
const wordCount = newStr.length;
return Math.round(wordCount/265);
}
module.exports = {
// Before saving a value.
// Fired before an `insert` or `update` query.
beforeSave: async (model) => {
if (model.slug) {
model.slug = model.slug.replace(/ /g, '-').toLowerCase();
}
if (model.body) {
model.readTime = readTime(model.body);
}
},
beforeUpdate: async (model) => {
if (model.getUpdate().slug) {
model.update({
slug: model.getUpdate().slug.replace(/ /g, '-').toLowerCase()
});
}
if (model.getUpdate().body) {
model.update({
readTime: readTime(model.getUpdate().body)
});
}
},
};
(必须感谢Jim Laurie的帮助)。
但是,尽管这行得通,但我还是渴望使整个过程更加实时。因此,({readTime
)字段应该持续更新,而不是等到单击 Save 按钮之后,例如,每次更新content
文本框。我可以使用React轻松完成此操作,但是不知道要触摸哪个文件!我尝试查看public
,admin
等文件夹以及其他位置,但是找不到与该视图相对应的文件。