Как я могу установить изображение по умолчанию, если ни один не выбран в форме отправки - PullRequest
0 голосов
/ 07 ноября 2019

У меня есть приложение CRUD, созданное с помощью node.js, express и mongoose. В этом приложении у меня есть форма, и 1 из входных данных представляет собой файл ввода для загрузки изображения. Я использую облачное хранилище, облачное хранилище и мультитер для обработки этих изображений. Если пользователь загружает изображение, я могу успешно добавить его в свою базу данных и впоследствии отобразить его позже. То, что я не смог выяснить, это как установить изображение по умолчанию, если ни один не выбран во входных данных файла. Вот мой бланк для отправки:

router.post('/add', parser.single("image"), (req, res) => {
    const newContent = {
        name: req.body.contentName,
        userId: req.user.id,
        username: req.user.username,
        image: {
            url: req.file.url,
            id: req.file.public_id
        },
    }
    new Content(newContent)
    .save()
    .then(() => {
        req.flash('success_msg', 'Content added');
        res.redirect('/content')
    })
});

А вот мой облачный конфиг:

cloudinary.config({
    cloud_name: ******,
    api_key: ******,
    api_secret: ******
    });
    const storage = cloudinaryStorage({
    cloudinary: cloudinary,
    folder: "demo",
    allowedFormats: ["jpg", "png"],
    transformation: [{ width: 348, height: 236.81, crop: "limit" }]
    });
    const parser = multer({ storage: storage });

Я просмотрел облачную документацию и нашел несколько экземпляров параметра default_image. чтобы добавить, но независимо от того, где я добавляю его в облачном конфиге, я получаю сообщение об ошибке "не могу прочитать свойство 'url' из неопределенного. Должно ли это быть обработано в моем посте, в моем конфиге или обоих? Для справки, моя модель контента имеетсвойство изображения устанавливается следующим образом:

        image: {
            url: {
                type: String,
                required: false
            },
            id: {
                type: String,
                required: false
            }
        },

Любая помощь приветствуется, спасибо!

1 Ответ

0 голосов
/ 08 ноября 2019

При доступе к изображению вы можете попробовать:

cloudinary.url("sample.jpg", {width: 300, height: 100, crop: "scale",default_image: "avatar.png"});
...