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

Node.js实现数据库文本按换行/列表展示的问题求助

解决Node.js从数据库取文本后按行/列表展示的问题

我希望在页面上展示数据库中存储的所有文本,要求以列表形式呈现,示例如下:

  • 数据库中的第一条文本
  • 第二条文本

我尝试了以下代码,但当前输出是两条文本连在一起:数据库中的第一条文本 第二条文本,期望每条文本单独占一行(可带或不带列表标记):

app.get('/readtext', async (req, res) => {
  try {
    const document = await client.query("SELECT text FROM document");
    let variable = document.rows.map(row => row.text).join("\n");
    res.send(variable);
  } catch (error) {
    console.log(error);
  }
});

原因分析

当前代码的问题在于:用\n拼接文本后通过res.send()返回时,响应默认的Content-Type是text/html,浏览器会把换行符解析为空格,导致文本连在一起显示。

三种可行解决方法

1. 直接返回HTML列表(推荐,符合列表展示需求)

将数据库返回的文本转换为HTML的<li>元素,再包裹成<ul>,浏览器会直接渲染成列表:

app.get('/readtext', async (req, res) => {
  try {
    const result = await client.query("SELECT text FROM document");
    // 生成HTML列表结构
    const listHtml = `<ul>${result.rows.map(row => `<li>${row.text}</li>`).join('')}</ul>`;
    res.send(listHtml);
  } catch (error) {
    console.error(error);
    res.status(500).send('数据获取失败');
  }
});

2. 返回纯文本并保留换行

如果不需要列表样式,仅需每行单独显示,可设置响应的Content-Type为text/plain,让浏览器解析换行符:

app.get('/readtext', async (req, res) => {
  try {
    const result = await client.query("SELECT text FROM document");
    const textLines = result.rows.map(row => row.text).join('\n');
    // 设置响应为纯文本格式
    res.set('Content-Type', 'text/plain');
    res.send(textLines);
  } catch (error) {
    console.error(error);
    res.status(500).send('数据获取失败');
  }
});

3. 返回JSON数组给前端渲染

如果是前后端分离场景,建议返回JSON格式数组,由前端页面自行处理渲染逻辑:

app.get('/readtext', async (req, res) => {
  try {
    const result = await client.query("SELECT text FROM document");
    const textList = result.rows.map(row => row.text);
    res.json(textList);
  } catch (error) {
    console.error(error);
    res.status(500).json({ message: '数据获取失败' });
  }
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 17:00:05