У меня есть несколько пользователей в моей базе данных, и я хочу отобразить их в списке. Я понятия не имею, как я могу отобразить фамилию из файла 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 показывает только список