You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Node.js服务端直接从Quill Delta提取文本

在Node.js服务端直接将Quill Delta转换为文本的方案

你可以通过以下两种轻量、高性能的方案实现,完全不需要操作HTML元素,适配高流量场景:

方案1:使用专用的Delta转文本库

quill-delta-to-text 是一个专门处理Quill Delta转纯文本的轻量库,无DOM依赖,性能优异。

  1. 安装依赖:
npm install quill-delta-to-text
  1. 在服务端代码中使用:
const deltaToText = require('quill-delta-to-text');
// 从MongoDB查询得到Submission实例
const submission = await Submission.findById(req.params.id);
// 转换Delta为纯文本
const plainText = deltaToText(submission.contents);

这个库会自动遍历Delta的ops数组,提取所有文本内容,忽略格式、删除、保留等操作,完全满足你的需求。

方案2:手动解析Delta(无额外依赖)

如果不想引入新依赖,可直接编写简单的解析函数处理Delta的ops数组:

function deltaToPlainText(delta) {
  if (!delta?.ops) return '';
  return delta.ops.reduce((text, op) => {
    // 仅提取字符串类型的insert内容,忽略其他操作(如格式、图片)
    if (op.insert && typeof op.insert === 'string') {
      return text + op.insert;
    }
    return text;
  }, '');
}

// 使用示例
const submission = await Submission.findById(req.params.id);
const plainText = deltaToPlainText(submission.contents);

该函数直接遍历Delta操作队列,仅提取文本内容,性能极高,适合高流量API场景。

这两个方案都不需要前端额外传递文本,仅通过MongoDB ID即可在服务端完成转换,同时避免了JSDOM模拟DOM带来的性能开销。

内容的提问来源于stack exchange,提问作者Valerian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 19:24:52