Невозможно создать или отредактировать новое сообщение (Node & Mon go) - PullRequest
0 голосов
/ 05 марта 2020

Я уже решил проблему, но теперь ЭТО вернулось. Я хочу сохранить нового исполнителя на веб-сайте или отредактировать его, но теперь это похоже на то, что приложение не подключается к БД, но это так! Я проверил.

const
    express = require('express'),
    router = express.Router(),
    Post = require('../models/post');


// Define which ImageTypes are avaiable to upload
const imageMimeTypes = ['image/jpeg', 'image/png', 'image/gif', 'image/jpg'];


// All admin Routes
router.get('/', async (req, res) => {
    renderNewPage(res, new Post())
})
// New Route
router.get('/create', (req, res) => {
    res.render('admin/createPost/index', {
        layout: 'layouts/admin',
        // Defined in models/post, gets variables
        post: new Post()
    });
})
// New Post create
router.post('/', async (req, res) => {
    const post = new Post({
        // get information from sended new Post (above) and defines variables to use in ejs files
        surname: req.body.surname,
        name: req.body.name,
        bio: req.body.bio,
        birthday: req.body.birthday,
        technic: req.body.technic,
        techPricerangeFrom: req.body.techPricerangeFrom,
        techPricerangeTo: req.body.techPricerangeTo
    })
    // set FilePond saving files to DB
    saveProfilpic(post, req.body.profilpic)

    try {   // await for new post to safe
        const newPost = await post.save();
        res.redirect('admin');
    } catch {
        renderNewPage(res, post, true)
    }
})


//? Singe Artist Show, Edit, Upate, Delete
// Create single artists page 
router.get('/:id', (req, res) => {
    res.send('Show Artist' + req.params.id)
})

// Edit artist
router.get('/:id/edit', async (req, res) => {
    try {
        const findPost = await Post.findById(req.params.id)
        res.render('admin/edit', {
            layout: 'layouts/admin',
            post: findPost
        })
    } catch {
        res.redirect('/admin')
    }
})

// Update artist text
router.put('/:id', async (req, res) => {
    let post;
    try {
        post = await Post.findById(req.params.id)
        post.surname = req.body.surname,
        post.name = req.body.name,
        post.bio = req.body.bio,
        post.birthday = req.body.birthday,
        post.technic = req.body.technic,
        post.techPricerangeFrom = req.body.techPricerangeFrom,
        post.techPricerangeTo = req.body.techPricerangeTo,
        post.profilpic = req.body.profilpic

        await post.save();
        res.redirect(`/admin`);
    } catch {
        if (post == null) {
            res.redirect('/admin')
        }
        else {
            res.render('admin/edit', {
                layout: 'layouts/admin',
                post: post,
            })
        }
    }
})

// Define functions

async function renderNewPage(res, post, hasError = false) {
    // Implement all Posts (artists) in the DB
    try {
        const posts = await Post.find({}).collation({ locale: 'en', strength: 2 }).sort({ name: 1 })  // wait and find all post and sort my name
        const params = {
            layout: 'layouts/admin',
            posts: posts,    // take all posts from await Post.find({}) and overrides the updates the posts
        }
        if (hasError) params.errorMessage = 'Ein Fehler ist aufgetreten'
        res.render('admin/index', params);
    } catch (err) {
        res.redirect('/');
    }
}

// func for dave files via filepond
function saveProfilpic(post, profilpictureEncoded) {
    if (profilpictureEncoded == null) return
    const profpic = JSON.parse(profilpictureEncoded);
    if (profpic != null && imageMimeTypes.includes(profpic.type)) { // If the file is a json obj & from the type image (jpg, png)
        post.profilpic = new Buffer.from(profpic.data, 'base64')    // Buffer.from(where, how)
        post.profilpicType = profpic.type
    }
}

module.exports = router;

все типы в файле модели / записи являются строками. Если я хочу что-то изменить, он перенаправляет меня в / admin, что означает ошибку. Я получил все последние пакеты (express, пн goose, ...)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...