限制下载次数

我真的很新使用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);