NodeJS/Multer:如何在现有Schema中添加另一个PDF文件
解决方案
首先要确保你的Schema里有一个数组类型的字段来存储多个PDF文件,示例如下:
const yourSchema = new mongoose.Schema({ // 其他业务字段,比如用户ID、文档名称等 pdfFiles: [{ data: Buffer, // 存储PDF二进制数据 filename: String, // 文件名 contentType: String // 文件类型,比如'application/pdf' }] });
接下来用$push操作符给目标文档追加新PDF,不会替换原有文件也不会新建集合:
// 假设你要更新的文档有唯一标识documentId const newPdf = { data: pdfBuffer, // 你的PDF二进制缓存 filename: "new-document.pdf", contentType: "application/pdf" }; // 执行更新:找到目标文档,把新PDF推到数组里 await YourModel.updateOne( { _id: documentId }, // 精准定位要更新的文档 { $push: { pdfFiles: newPdf } } );
如果需要避免重复添加相同的PDF文件,可以用$addToSet替代$push,只有当数组中不存在该元素时才会添加:
await YourModel.updateOne( { _id: documentId }, { $addToSet: { pdfFiles: newPdf } } );
关键注意点
- 必须使用MongoDB的数组更新操作符(
$push/$addToSet),不能直接赋值pdfFiles: newPdf,否则会覆盖原有的PDF数组 - 查询条件要精准(比如用
_id),避免误更新多个文档 - 如果目标文档原本没有
pdfFiles字段,执行$push后会自动创建该数组字段
内容的提问来源于stack exchange,提问作者Hector Agosto
相关产品推荐
相关产品推荐

