Если пользователь нажимает на определенный ресторан, я хочу, чтобы он отображал отзывы об этом ресторане, а также контроллер, модель и все, что работает для обзора. Можно ли сказать, как /all/:id
, чтобы получить отзывы?
Я думаю, мне нужно будет сделать новый взгляд. Это решит проблему, или есть способ сделать это, даже не добавляя новое представление?
Спасибо, и извините за вопросы nooby; Я новичок в Express и узле.
app. js
const express = require('express'),
app = express(),
es6Renderer = require('express-es6-template-engine'),
rootController = require('./routes/restaruants');
allRestaruantsController = require('./routes/allTheRestaruants');
reviewController = require('./routes/reviewController');
app.engine('html', es6Renderer);
app.set('views','views');
app.set('view engine', 'html');
app.listen(9000, () => {
console.log('Power level over 9000');
});
app.use('/', rootController);
app.use('/all', allRestaruantsController);
app.use('/all/:id', reviewController);
reviewController. js
const express = require('express'),
router = express.Router(),
reviewModel = require('../models/reviewModel');
router.get('/'), async (req, res) => {
let restaruantData = [];
restaruantData = await reviewModel.getReviewsById()
res.render ('template', {
locals: {
title: 'All The Restaruants',
dataArray: restaruantData
},
partials : {
partial: 'partial-all'
}
});
}
module.exports = router;
reviewModel. js
const db = require('./conn')
class ReviewByList {
constructor(review) {
this.review = review;
}
static async getReviewsById() {
try {
const response = await db.any(`SELECT restaruant.name, review.review FROM restaruant INNER JOIN review ON restaruant.id = review.restaruant_id`);
console.log(response)
return response;
}
catch (error) {
console.error('ERROR', error);
return error;
}
}
}
module.exports = ReviewByList;
Также вот часть, которую он использует:
<H1> Restaurants around the block</H1>
<ul>
${dataArray.map(item =>
`<li><a class="all" href ='/all/${item.id}'>${item.name}</a> Address: ${item.address}</li>`
).join('')}
</ul>
Я подтвердил, что обзор работает в частичном.