преобразовать mySQL BLOB в HTML файл в NodeJS / Reactjs - PullRequest
0 голосов
/ 06 августа 2020

Я создаю веб-сайт, и мне нужно отобразить описание каждого project. Итак, я начал с простого TEXT () в поле DB, но на выходе получился полный текст блока ... Затем я заменил TEXT () на BLOB () в моей базе данных с description.txt, но неожиданно текст тоже не форматируется, он все еще как текстовый блок. После этого измените description.txt на описание. html (с правильным), и вывод будет читаться как .text: / (я имею в виду, что это не читается как файл html). Вот мой NodeJS код:

router.get("/:idProject/description", (req, res) => {
    const { idProject } = req.params;
    const sql = "SELECT p.description FROM project AS p WHERE id = ? ";
    connection.query(sql, [idProject], (err, result) => {
        if (err) {
            res.status(500).send("Impossible de trouver le projet");
        } else {
            const convertBufferToString = Buffer.from(result[0].description);

            res.status(200).send(convertBufferToString);
        }
    });
});

И мой ReactJS код:

function Description({ projectName, url }) {
    const { id } = useParams();
    const [description, SetDescription] = useState(null);

    const getDescription = (idProject) => {
        const projectURL = `${process.env.REACT_APP_HOST}/projects/${idProject}/description`;
        Axios.get(projectURL)
            .then((response) => response.data)
            .then((data) => SetDescription(data));
    };
    useEffect(() => {
        getDescription(id);
    }, [id]);

    return (
        <React.Fragment>
            <Typography variant="h3">{projectName}</Typography>
            <Typography paragraph variant="body1">
            </Typography>
            <Link href={url}> Lien du site</Link>
                {description ? description : "Description du projet"}
        </React.Fragment>
    );
}

export default Description

Я пробовал много вещей, например, новый BLob, новый файл, новый FileReader и т. Д. c но я не знаю, как решить эту проблему. Итак, мой вопрос: если это возможно, как я могу прочитать res.send (BLOB или Buffer) как HTML в ReactJS pls? Вместо этого любое предложение получить отформатированное описание с помощью project.id?

Заранее большое спасибо!

1 Ответ

0 голосов
/ 07 августа 2020

Спасибо моему однокласснику Бастисту, который нашел решение:

в React:

return (
        <React.Fragment>
            <Typography variant="h3">{projectName}</Typography>
            <Typography paragraph variant="body1" dangerouslySetInnerHTML={{ __html: description }}/>
            <Link href={url}> Lien du site</Link>
        </React.Fragment>
    );

полное руководство по реакции опасно setinner html

А теперь выход такой, как и ожидалось! Благодаря ему

...