Strapi中博客帖子的实时“阅读时间”

时间:2019-03-26 09:43:21

标签: strapi

我的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轻松完成此操作,但是不知道要触摸哪个文件!我尝试查看publicadmin等文件夹以及其他位置,但是找不到与该视图相对应的文件。

0 个答案:

没有答案