我正在尝试使用 GridFS 保存项目及其文件。我想先保存项目并使用项目的“_id”作为文件的元数据。
这是我的代码:
newProject.save(function (err,project) {
if (err) {
console.log('save error', err);
}
console.log("project added");
var id=poject._id;
var filepath = req.files.file.path;
var filename = req.files.file.name;
var writestream = gfs.createWriteStream({ filename: filename, metadata:id });
console.log(filepath);
fs.createReadStream(filepath)
.on('end', function() {
})
.on('error', function(err) {
console.log("error encountered"+err);//ENOENT,open error
})
.pipe(writestream);
});
我收到以下错误:- ENOENT,打开 '/tmp/45e85388793de'
我知道当目录不存在时会出现此错误。如您所见,我在保存项目后正在编写文件,因为我需要将文件链接到项目。这就是为什么我编写了代码来将文件保存在 project.save() 的回调函数中,但它在那里不起作用。如果我将相同的代码放在 .save 块之外,则相同的代码可以完美地用于相同的路径。(我已经显示了内部和外部的路径,它们是相同的)