正在尝试创建一个应用程序以使用GridFs将图像直接上传和添加字幕到mongodb。然后创建一个API以在客户端显示这些图像和标题。 主要问题。 这是我与grdifs存储引擎兼容的产品。就像魅力一样。
const storage = new GridFsStorage({
url : mongoURI,
file : (req, file) => {
return new Promise((resolve, reject) => {
crypto.randomBytes(16, (err, buff) => {
if(err){
return reject(err);
}
const filename = buff.toString('hex') + path.extname(file.originalname);
const fileInfo = {
filename: filename,
caption : req.body.name,
bucketName : 'uploads'
};
resolve(fileInfo);
});
});
}
});
const upload = multer({ storage });
app.post('/upload', upload.single('file'), (req, res) =>{
res.json({file : req.file});
});
问题是,当我尝试使用我创建的Post Model并在该路线上使用猫鼬方案合并其他动作后,像这样。
app.post('/upload', upload.single('file'), (req, res) =>{
const newPost = new Post({
caption : req.body.caption,
image : req.file.filename
})
newPost.save()
.then(post => res.json('Posted'))
.catch(err => console.log(err)) ;
//res.json({file : req.file});
}); 服务器只是在加载时卡住了。 因此,我的问题是,使用gridfs是否会改变我们通常在MongoDB中使用猫鼬模型的方式?
我的帖子模型(post.js)
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
//Post Schema
let PostSchema = new Schema({
caption : {
type : String,
required : true
},
image : {
type: String,
required: true
}
});
let Post = module.exports = mongoose.model('Post', PostSchema);
我想使用此Post集合来存储上载的图像文件名以及来自客户端的标题。我做错了,我需要帮助。
另一个问题,现在正在使用表单来发出此POST请求。但是,当我尝试使用axios从客户端端口(即8080)向我的API端口(即5000)发出发布请求时,出现CORS错误。 我该如何克服?