Javascript MULTER-S3:TypeError:无法将对象转换为原语值…;直接[作为_立即回拨]
我正在使用Multer-s3构建一个MEAN stack应用程序,将图像上传到我的数据库。但是,当我调用上载函数时,会出现以下错误:Javascript MULTER-S3:TypeError:无法将对象转换为原语值…;直接[作为_立即回拨],javascript,angularjs,image-uploading,mean-stack,multer,Javascript,Angularjs,Image Uploading,Mean Stack,Multer,我正在使用Multer-s3构建一个MEAN stack应用程序,将图像上传到我的数据库。但是,当我调用上载函数时,会出现以下错误: POST http://localhost:3000/api/upload/single 500 (Internal Server Error) TypeError: Cannot convert object to primitive valu…diate [as _immediateCallback](timers.js:354:15)↵", status:
POST http://localhost:3000/api/upload/single 500 (Internal Server Error)
TypeError: Cannot convert object to primitive valu…diate [as _immediateCallback](timers.js:354:15)↵", status: 500, config: Object, statusText: "Internal Server Error"
在我的服务器端app.js中
// MULTER
var s3config = require('./config/s3');
var upload = multer({
storage: s3({
dirname: s3config.dirname,
bucket: s3config.bucket,
secretAccessKey: process.env.AWS_ACCESS_SECRET,
accessKeyId: process.env.AWS_ACCESS_KEY,
region: s3config.region,
contentType: function(req, file, next) {
next(null, file.mimetype);
},
filename: function(req, file, next) {
var ext = '.' + file.originalname.split('.').splice(-1)[0];
var filename = uuid.v1() + ext;
next(null, filename);
}
})
});
// UPLOAD SINGLE FILE
app.post('/api/upload/single', upload.single('file'), function(req, res) {
var clothing_1 = {
type: req.body.type,
image: req.file.key
};
console.log('req.body =' + req.body);
console.log('req.body.type =' + req.body.type);
console.log('req.file.key =' + req.file.key);
// get the user model User.findOne({ id: req.user._id })
User.findOne({ _id: req.user._id }, {}, { new: true }, function(err, user){
user.clothing.push(clothing_1);
// save this user
user.save(function(err, user){
if(err) return res.status(401).send({ message: 'your error:' + err });
else return res.json({ user: user })
});
});
});
在我的前端控制器中:
self.uploadSingle = function() {
Upload.upload({
url: API + '/upload/single',
data: { file: self.file, type: self.clothingType }
})
.then(function(res) {
self.usersClothing = res.data.user.clothing.map(function(clothing) {
clothing.image = S3_BUCKET + clothing.image;
return clothing;
});
})
.catch(function(err) {
console.error(err);
});
}
这个功能是在我按下上传按钮时执行的。只是因为服务器找不到req.body在文档中提供的用户id
User.findOne({ _id: req.user._doc._id } fixed the issue
只是服务器找不到req.body在文档中提供的用户id的问题
User.findOne({ _id: req.user._doc._id } fixed the issue
删除Console.logs后,错误切换为:TypeError:cannotreadproperty'_身份证号码';未定义的原因很简单,就是服务器无法在req.body给出的_id中找到用户。User.findOne({u-id:req.User.\u-doc.\u-id}修复了删除控制台后的问题。日志错误已切换为:TypeError:cannotreadproperty';#id';#id';#unfinedwas仅仅是服务器无法在#u-doc.User.findOne({id:req.User.\u-doc id}修复了该问题