В последнее время я переписывал свой очень простой сервер. Я представлял обещания, и последняя часть моего переписывания - реализация моих методов публикации, которые включают использование Multer для загрузки изображений. Это то, что я до сих пор. GET работает отлично, как и POST, когда я удаляю часть загрузки изображения. К сожалению, когда я представляю Multer, я получаю эту ошибку:
TypeError: Cannot convert object to primitive value
at exports.format (util.js:91:18)
at Console.log (console.js:46:37)
at Object.createACategory (/root/api/controllers/controller.js:34:18)
Вот мой класс Route, где я вызываю POST:
'use strict';
module.exports = function(app, gameCategoryList) {
var multer = require('multer');
var storage = multer.diskStorage({
destination: function (req, file, callback) {
callback(null, '/var/www/html/uploadsCategoryIcon');
},
filename: function (req, file, callback) {
var originalname = file.originalname;
var extension = originalname.split(".");
callback(null, extension[0] + '-' + Date.now() + '.' + extension[extension.length-1]);
}
});
var upload = multer({ storage: storage });
app.get('/api/gameCategories', (req, res) => {
gameCategoryList.listAllCategories().then(category => res.json(category));
});
app.post('/api/createGameCategory', upload.single('gameCategoryImage'), (req, res) => {
gameCategoryList.createACategory(req.body, req.file).then(category => res.json(category));
});
};
Так выглядит метод в моем контроллерекласс:
createACategory(body, file) {
var splitPath = file.path.split("html");
var imagePath = 'example.com' + splitPath[1];
var new_category = new Category({
categoryName: body.categoryName,
categoryTag: body.categoryTag,
categoryImageUrl: imagePath
});
return new Promise(function(resolve, reject) {
new_category.save(function(err, category) {
if (err) {
return reject(err)
} else {
return resolve(category)
}
});
}).then((category) => {
if(category)
{
return category
}
else
{
return { success: false }
}
});
}
ОБНОВЛЕНИЕ:
В строке 34 файла controller.js есть:
var new_category = new Category({
categoryName: body.categoryName,
categoryTag: body.categoryTag,
categoryImageUrl: imagePath
});
Когда я удаляю часть изображения этого кода (categoryImageUrl: imagePath)) и не передавайте файлы или изображения, этот код работает нормально.