node.js - Sails Waterline 大文件 PostgreSQL

标签 node.js postgresql sails.js waterline

我想在 postgreSQL 数据库下保存大文件(最大 5Go),即使我说这是个坏主意,也不要问我为什么我的老板想要。所以现在我必须找到一个可行的解决方案。

现在我正在尝试这个:

var file = req.file("largeFile");

    file.upload({maxBytes : 1073741824 },function (err, uploadedFiles)
    {
      if (err)
      {
        return res.serverError(err);
      }
      var fs = require("fs");

      if (uploadedFiles.length > 0)
      {
        var file = uploadedFiles[0];
        fs.readFile(file.fd, function (err, data)
        {
          if (err)
          {
            return res.serverError(err);
          }

          var largeFile = {name : "testFile", data: data};
          LargeFile.create(largeFile).exec(function created (err, newInstance) {

            if(!err){
              res.view("homepage");
            }
          });
        });
      }
    });

应用程序在 LargeFile.create 崩溃:

FATAL ERROR: CALL_AND_RETRY_0 Allocation failed - process out of memory

我尝试设置 --max-old-space-size 和 --max_executable_size 但没有成功。

这是可能的还是不可能的任务?

最佳答案

错误不是来自 PostgreSQL:它来自 Node.js。

最可能的解释:您的服务器没有足够的 RAM 内存。

告诉您的老板,您的服务器无法做到这一点。此外,必须完成每一个可能的优化。检查数据库的来源,尽量减少变量,等等...... 相信我,这不仅仅是一个“坏习惯”。如果您希望您的服务器扩展到大量用户,您根本无法在 PostgreSQL 上处理 5GB 的文件。

否则,请尝试优化您的代码:以其他方式格式化文件数据,检查压缩可能性,避免创建太多变量并检查您的代码是否存在内存泄漏。

我会告诉他放弃。

关于node.js - Sails Waterline 大文件 PostgreSQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29651794/

相关文章:

regex - node.js - 将正则表达式发送到服务器

SQL 查询处理三个表

sails.js - HTML PUT sails-filemaker

node.js - 限制在 Sails.js 模型中设置字段

node.js - 使用 mongoose findOne/save 保存对象不起作用

javascript - 如何在 Node 中调试基于 promise 的代码?

javascript - Web 服务器上的 NodeJS 应用程序导致 fork 炸弹 - bash : fork: retry: No child processes

sql - 如何传递 ERROR : more than one row returned by a subquery used as an expression

sql - 双重嵌套 array_agg(row_to_json())

datetime - 如何在Sails.js或Express.js中设置本地时区