【发布时间】:2020-03-24 13:59:28
【问题描述】:
我在发布两个集合时遇到问题 - 一个是文件,一个是基于文件的字段的文字对象。 这是路由方法
// @route POST /upload
// @desc Uploads file to DB
router.post('/', upload.single('file'), auth, (req, res) => {
const newFile = new File({
fileID: req.file.id,
src: 'api/files/image/' + req.file.filename,
altText: 'No image',
caption: req.body.caption
})
newFile.save()
});
和文件模型:
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
// Create Schema
const FileSchema = new Schema({
fileID: {
type: Schema.Types.ObjectId
},
src: {
type: String
},
altText: {
type: String
},
caption: {
type: String
}
});
module.exports = File = mongoose.model('file', FileSchema);
问题是,如果我这样做,我将无法获得标题属性并且我有错误:
TypeError: 无法读取未定义的属性“id”
或者如果我删除它
req.file.id
我明白了
TypeError: 无法读取未定义的属性“文件名”
即使我在我的数据库中获得了良好的价值。 如果我同时删除 id 和文件名,我会得到标题属性。 所以问题就在这里:
fileID: req.file.id,
src: 'api/files/image/' + req.file.filename
但我不知道如何处理。
【问题讨论】:
标签: javascript post multer gridfs