Я делаю запрос на сообщение для создания сообщения в блоге, и я использую Fommidable для загрузки IMG для каждого поста, но я получаю ошибку 400. < /p>
Обновление: теперь я получаю фактическую ошибку: < /p>
Post validation failed: title: Cast to string failed for value "[ 'njk' ]" (type Array) at path "title", body: Cast to string failed for value "[ 'ugyjhvbhujb' ]" (type Array) at path "body", slug: Path `slug` is required.
< /code>
console.log(formData) Возвращает объект строк в фронте, например:
{ title: "suyghb", body: "cguyasjbhxz"...}
< /code>
but in the backend the values in fields aka formData are now arrays like:
{ body: [ 'ihubj' ], title: [ '87tugyh' ] }
< /code>
why is this?
I tried setting
'Content-Type': 'application/json
< /code>
but then I receive the error request entity too large.
posts.js (контроллеры)
export const create = (req, res) => {
let form = new formidable.IncomingForm()
form.keepExtensions = true
form.parse(req, (err, fields, files) => {
if (err) {
return res.status(400).json({
error: "Image could not be uploaded."
})
}
let post = new Post(fields)
if (files.photo) {
const photoFilePath = files.photo.map((file) => {
return file.filepath
})
}
const photoStr = photoFilePath.toString()
post.photo.data = fs.readFileSync(photoStr, 'utf-8')
post.photo.contentType = files.photo.type
}
post.save()
/• .then & .catch •/
< /code>
Form Validation
const { body, validationResult } = require('express-validator');
exports.userSignupValidator = (req, res, next) => {
validationBodyRules = [
body('email', 'email is required').exists(),
body('password', 'password is required').exists(),
body('email', 'email is required').notEmpty(),
body('password', 'password is required').notEmpty()
]
checkRules = (req, res, next) => {
const errors = validationResult(req);
if (!errors.isEmpty()) {
return res.status(400).json({ errors: errors.array() });
}
next();
};
}
< /code>
API request (client side)
export const createPost = (token, formData) => {
console.log(formData)
return fetch('http://localhost:8000/posts/new-post', {
method: 'POST',
headers: {
Authorization: `Bearer ${token}`,
},
body: formData
})
.then(response => {
return response.json();
})
.catch(err => {
console.error(err);
});
};
Подробнее здесь: https://stackoverflow.com/questions/797 ... midable-no
Как исправить проверку Post Wallanation Не удалось: заголовок: Cast to String Faile - Formidable (Node) ⇐ Javascript
Форум по Javascript
1752950222
Anonymous
Я делаю запрос на сообщение для создания сообщения в блоге, и я использую Fommidable для загрузки IMG для каждого поста, но я получаю ошибку 400. < /p>
Обновление: теперь я получаю фактическую ошибку: < /p>
Post validation failed: title: Cast to string failed for value "[ 'njk' ]" (type Array) at path "title", body: Cast to string failed for value "[ 'ugyjhvbhujb' ]" (type Array) at path "body", slug: Path `slug` is required.
< /code>
console.log(formData) Возвращает объект строк в фронте, например:
{ title: "suyghb", body: "cguyasjbhxz"...}
< /code>
but in the backend the values in fields aka formData are now arrays like:
{ body: [ 'ihubj' ], title: [ '87tugyh' ] }
< /code>
why is this?
I tried setting
'Content-Type': 'application/json
< /code>
but then I receive the error request entity too large.
posts.js (контроллеры)
export const create = (req, res) => {
let form = new formidable.IncomingForm()
form.keepExtensions = true
form.parse(req, (err, fields, files) => {
if (err) {
return res.status(400).json({
error: "Image could not be uploaded."
})
}
let post = new Post(fields)
if (files.photo) {
const photoFilePath = files.photo.map((file) => {
return file.filepath
})
}
const photoStr = photoFilePath.toString()
post.photo.data = fs.readFileSync(photoStr, 'utf-8')
post.photo.contentType = files.photo.type
}
post.save()
/• .then & .catch •/
< /code>
Form Validation
const { body, validationResult } = require('express-validator');
exports.userSignupValidator = (req, res, next) => {
validationBodyRules = [
body('email', 'email is required').exists(),
body('password', 'password is required').exists(),
body('email', 'email is required').notEmpty(),
body('password', 'password is required').notEmpty()
]
checkRules = (req, res, next) => {
const errors = validationResult(req);
if (!errors.isEmpty()) {
return res.status(400).json({ errors: errors.array() });
}
next();
};
}
< /code>
API request (client side)
export const createPost = (token, formData) => {
console.log(formData)
return fetch('http://localhost:8000/posts/new-post', {
method: 'POST',
headers: {
Authorization: `Bearer ${token}`,
},
body: formData
})
.then(response => {
return response.json();
})
.catch(err => {
console.error(err);
});
};
Подробнее здесь: [url]https://stackoverflow.com/questions/79707488/how-to-fix-post-validation-failed-title-cast-to-string-failed-formidable-no[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия