Javascript 限制下载的数量

Javascript 限制下载的数量,javascript,node.js,mongodb,gridfs,Javascript,Node.js,Mongodb,Gridfs,我对使用mongoDB和node.js非常陌生,我试图限制服务器中每个文件的下载数量。我正在使用gridfs将文件存储在数据库中,生成一个链接以下载文件后,我需要限制每个文件的下载次数,但不知道如何进行下载。假设您使用express作为node.js http服务器,您可以这样做: const app = require('express')(); const bucket = new mongodb.GridFSBucket(db, { chunkSizeBytes: 1024, bu

我对使用mongoDB和node.js非常陌生,我试图限制服务器中每个文件的下载数量。我正在使用gridfs将文件存储在数据库中,生成一个链接以下载文件后,我需要限制每个文件的下载次数,但不知道如何进行下载。

假设您使用express作为node.js http服务器,您可以这样做:

const app = require('express')();
const bucket = new mongodb.GridFSBucket(db, {
  chunkSizeBytes: 1024,
  bucketName: 'songs'
});

const downloads = {};

const fileURI = '/somefile.mp3';
const maxDownload = 100;

app.get(fileURI, function(req, res) {
  if (downloads[fileURI] <= maxDownload) {
      // pipe the file to res
      return bucket.openDownloadStreamByName('somefile.mp3').
      .pipe(res)
      .on('error', function(error) {
          console.error(error);
      })
      .on('finish', function() {
          console.log('done!');
          downloads[fileURI] = downloads[fileURI] || 0;
          downloads[fileURI]++;
      });
    } 

    return res.status(400).send({ message: 'download limit reached' });
});    

app.listen(8080);
const-app=require('express')();
const bucket=new mongodb.GridFSBucket(db{
chunkSizeBytes:1024,
bucketName:“歌曲”
});
常量下载={};
const fileURI='/somefile.mp3';
const maxDownload=100;
app.get(fileURI,函数(req,res){

如果(像文件一样下载[fileURI],您可以将下载计数存储在单独的mongodb数据库或集合中。