如何获取通过GridFS流式上传至MongoDB的文档_id?
获取GridFS流式上传文件的_id方法
当然可以拿到目标文件的_id,方法很直接:bucket.openUploadStream()返回的GridFSBucketWriteStream实例本身就带有id属性,而且这个属性在流创建时就已经生成,无需等待上传完成。
方法一:直接获取
先将上传流赋值给变量,直接访问其id属性即可:
const uploadStream = bucket.openUploadStream('myFile.pdf'); // 直接拿到文件ID const fileId = uploadStream.id; readableStream.pipe(uploadStream);
方法二:上传完成后获取
如果需要在文件上传完成后再处理ID,可以监听流的finish事件:
const uploadStream = bucket.openUploadStream('myFile.pdf'); readableStream.pipe(uploadStream); uploadStream.on('finish', () => { const fileId = uploadStream.id; // 这里执行上传完成后的逻辑,比如存储ID、返回给前端等 console.log('文件上传完成,ID为:', fileId); });
补充说明:这个id对应GridFS中fs.files集合里文档的_id,默认是MongoDB的ObjectId类型;如果创建流时通过第二个参数自定义了ID(如bucket.openUploadStream('myFile.pdf', { id: '自定义ID' })),则拿到的是你设置的自定义ID。
内容的提问来源于stack exchange,提问作者Robert
相关产品推荐
相关产品推荐

