Javascript nodejsmongodb处理和存储大量文本

Javascript nodejsmongodb处理和存储大量文本,javascript,node.js,mongodb,express,Javascript,Node.js,Mongodb,Express,我有一个NodeJS Express应用程序,我正在构建一个端点来更新条款和条件 http://127.0.0.1:3000/api/admin/info/terms/de?version=2 然而,我试图存储的文本太重了(文本有制表符、单引号和双引号等等),需要大量编辑才能放入json正文{“术语”:“easy text”}。{“术语”:“繁重的”文本//“那个”。我不“希望”编辑它 处理此类文本的最佳方式是什么?将其转换为二进制,然后发送 我的终点 router.post('/term

我有一个NodeJS Express应用程序,我正在构建一个端点来更新条款和条件

http://127.0.0.1:3000/api/admin/info/terms/de?version=2
然而,我试图存储的文本太重了(文本有制表符、单引号和双引号等等),需要大量编辑才能放入json正文{“术语”:“easy text”}。{“术语”:“繁重的”文本//“那个”。我不“希望”编辑它

处理此类文本的最佳方式是什么?将其转换为二进制,然后发送

我的终点

  router.post('/terms/:language', async (req, res) => {
  try {
    const { language } = req.params;
    const { version } = req.query;
    const { terms } = req.body;
    if (!version) return res.status(400).json({ message: 'Field "version" is empty' });
    let info = await PageInfo.findOne({ $and: [{ version }, { language }] });
    if (info) {
      const update = await PageInfo.findOneAndUpdate({ version: { $eq: version } }, {
        $set: {
          version,
          terms,
          language
        }
      }, { new: true });
      return res.status(200).json({ type: 'update', data: update });
    }
    info = await PageInfo.create({
      version,
      terms,
      language,
    });
    return res.status(200).json({ type: 'new', data: info });
  } catch (e) {
    return res.sendStatus(500);
  }
});

看起来GridFS是您想要使用的

您可以在此处阅读更多信息:


如果这不能解决您的问题,根据我的经验,当您的模式建模不好时,会出现此类问题,因此您可能需要重新考虑如何建模。

如果文本很大,它就很大。您可以将其压缩存储—当您至少可以猜一点点文本的性质时,选择算法是最好的—但这是一种错误不必一直压缩和解压缩。只有你才能知道这是否值得,因为我们不知道你的应用程序的详细信息。你应该问问自己,你当前处理文本的方式是否真的遇到性能问题?你可以将其转换为base64。除非长度也是一个问题,而不仅仅是长度字符。是的,base64似乎是个好主意,但在转换它之后,用base64数据发送POST req并将其转换回文本,我注意到一半的文本丢失,一些字符也消失了。我也正在转换为UTF8格式。我的文本文件不超过16 MB,而且永远不会超过,不确定是否需要这种额外的复杂性当我处理原始JSON时,问题在于文本格式和处理,但我认为编码文本就可以了。