如何在Node.js服务端直接从Quill Delta提取文本
在Node.js服务端直接将Quill Delta转换为文本的方案
你可以通过以下两种轻量、高性能的方案实现,完全不需要操作HTML元素,适配高流量场景:
方案1:使用专用的Delta转文本库
quill-delta-to-text 是一个专门处理Quill Delta转纯文本的轻量库,无DOM依赖,性能优异。
- 安装依赖:
npm install quill-delta-to-text
- 在服务端代码中使用:
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
相关产品推荐
相关产品推荐

