Покажите фамилию и имя с e js из mongodb - PullRequest
0 голосов
/ 02 марта 2020

У меня есть несколько пользователей в моей базе данных, и я хочу отобразить их в списке. Я понятия не имею, как я могу отобразить фамилию из файла sendet json в список .. Я использую последнюю версию Node, express, mon goose (mongoDB).

app. js

const
    express = require('express'),
    path = require('path'),
    fs = require('fs'),
    mongoose = require('mongoose'),
    bodyParser = require('body-parser'),
    RoutesAdmin = require('./routes/adminRoutes'),
    Routesdefault = require('./routes/defaultRoutes');

require('dotenv').config();

const app = express();

// Middleware
app.use(express.json());

// Set view engine
app.use(express.static(path.join(__dirname + '/public')));
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');

// Mongo
mongoose.connect(process.env.DATABASE_URI, { useNewUrlParser: true })
const db = mongoose.connection

db.on('error', (error) => console.log(errer));
db.once('open', () => {
    console.log('Connceted to Database');
})





// @route GET
// @desc route to admin panel and default
app.use('/', Routesdefault);
app.use('/admin', RoutesAdmin);


app.listen(process.env.PORT, () => {
    console.log('Listen at ' + process.env.PORT);
})

Маршруты. js

const
    express = require('express'),
    router = express.Router(),
    Post = require('../models/createPost'),
    adminController = require('../controller/adminController');

// Middleware to all routes beginning in admin
router.all('/*', (req, res, next) => {

    req.app.locals.layout = 'admin';
    next();
})

router.route('/')
    .get((req, res) => {
        res.render('admin/index');
    });

router.route('/posts/submit')
    .get((req, res) => {
        res.render('admin/index');
    });
router
    .get('/posts', async (req, res) => {
        try {
            const post = await Post.find();
            res.json(post);
            res.render('admin/posts/index', {surname: res.json(post.surname)})
        } catch (err) {
            res.status(500).json({ message: err.message })
        }
    })
    .get('/:id', getPost, (req, res) => {
        res.json(res.post);
    })
    // create
    .post('/', async (req, res) => {
        const post = new Post({
            name: req.body.name,
            surname: req.body.surname,
            bio: req.body.bio
        })
        try {
            const newPost = await post.save();
            res.status(201).json(newPost);
        } catch (err) {
            res.status(400).json({ message: err.message })
        }
    })
    .patch('/:id', getPost, adminController.patchPost)
    .delete('/:id', getPost, async (req, res) => {
        try {
            await res.post.remove();
            res.json({ message: "Deleted post" })
        } catch (err) {
            res.status(500).json({ message: err.message })
        }
    })
    // router.get('/admin/posts/create', (req, res) => {
    //     res.render('admin/posts/create')
    // })


// Function for patch and delete
async function getPost(req, res, next) {
    let post;
    try {
        post = await Post.findById(req.params.id)
        if (post == null) {
            return res.send(404).json({ message: "Cannot find post" })
        }
    } catch (err) {
        return res.status(500).json({ message: err.message })
    }
    res.post = post;
    next();
}

module.exports = router;

adminController. js

const
    expres = require('express');

// for patch a post
let patchPost = async (req, res) => {
    if (req.body.name != null) {
        res.post.name = req.body.name
    }
    if (req.body.surname != null) {
        res.post.surname = req.body.surname
    }
    if (req.body.bio != null) {
        res.post.bio = req.body.bio
    }
    try {
        const updatePost = await res.post.save();
        res.json(updatePost);
    } catch (err) {
        res.status(400).json({ message: err.message })
    }
}

module.exports = {
    patchPost
}

index.e js просто нормальный html файл с элементами ol и li. Я пытался отрисовать данные с фамилией: req.body.surname, но не получил значения из базы данных. Если я удаляю res. json (post) в Routes. js показывает только список

...