Задать вопрос
@Black_Courbeau

Как решить проблему с отображением картинки на EJS форме при бэкенде написаном на NodeJS?

Мой вопрос, возможно, покажется глупым, но, к сожалению, я сам не смог найти ответ. Моя проблема связана с отображением изображений из базы данных MongoDB (использую mongoose) на странице, созданной с помощью EJS. Я сохраняю объект в базу данных абсолютно корректно, но при попытке отобразить его на странице, по какой-то причине возникает следующая ошибка:
Product ID: 1739018792038_eb0910a1-91ce-438e-871f-acd3c3b66e92.jpg CastError: Cast to ObjectId failed for value "1739018792038_eb0910a1-91ce-438e-871f-acd3c3b66e92.jpg" (type string) at path "_id" for model "Product"


Вот контроллер для отправки файлов на страницу из Backend:

const getProduct = (req, res) => {
console.log(`Product ID: ${req.params.id}`);
const title = `Product: ${req.params.id}`
Product
.findById(req.params.id)
.then((prod) => {
console.log(prod);
res.render(createEJSPath('prCard'), { title, prod })})
.catch((error) => handlerEror(res, error))
}

Вот макет самой страницы:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="/prCard.css">
<title><%= title %></title>
</head>
<body>
<header>
<h1>Карточка goods</h1>
</header>
<main>
<form>
<div class="form-group product-image">
<label for="product-image">Изображение продукта</label>
<img src="<%= prod.imagePath %>" >
</div>
<div class="form-group">
<label for="product-name">><%= prod.name %></label>
</div>
<div class="form-group">
<label for="product-description">><%= prod.description %></label>
</div>
</form>
</main>
<footer>
<p>&copy; 2023 Ваш магазин</p>
</footer>
</body>
</html>

А вот пример объекта из БД:

{"_id":{"$oid":"67a7ae0bd093d6ff94eb5a32"},
"name":"Стеклянная пленка",
"imagePath":"1739042315415_176271-treh_mernoe_prostranstvo-purpur-treugolnik-fioletovyj-materialnoe_svojstvo-3840x2160.jpg",
"description":"UwU",
"isPipe":false,
"isFilm":true,
"__v":{"$numberInt":"0"}
}

Как решить эту проблему?
  • Вопрос задан
  • 24 просмотра
Подписаться 1 Средний 5 комментариев
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы