如果我想允许用户在帖子中上传视频,那么存储视频以便我稍后访问的最佳方式是什么?我目前只是使用 INSERT 查询将其上传到 PostGres SQL 数据库字段,但速度非常慢。
是否有其他方法或最佳实践来存储这样的大文件并快速有效地访问它?
var video = videoFile ? "'\\x" + videoFile.buffer.toString('hex') + "'" : "NULL";
let insertQuery = "INSERT INTO posts (video) VALUES(" + video + ") RETURNING *";
上面是我现在用来将文件插入数据库的代码。
最佳答案
不要将整个视频存储到数据库中。下面这两个步骤可能是更好的解决方案:
1) 将视频文件上传至云存储。请参阅Google Cloud Strage和 Amazon S3 。还有许多其他选择。你自己去比较一下吧。
2) 您将有一个链接或 ID(或 S3 中的 key )来访问文件。将所有这些链接或 ID 存储到您的数据库中。请看一下这个GCS doc还有这个S3 question .
另外,请使用non-blocking I/O这是node.js 的一个优点。对于您的情况,您可以尝试这样的操作:
let insertQuery;
let promisesList=[];
for(let vid of videoIds){
insertQuery = "INSERT INTO posts (videoId) VALUES($1) RETURNING *";
promisesList.push(client.query(query,[vid]));
}
await Promise.all();
关于javascript - 如何在 NodeJS Web 应用程序中存储和访问大文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51868320/