Проблемы с передачей данных MySQL в EJS - PullRequest
0 голосов
/ 26 сентября 2018

Я использую Node.js, Express и MySQL для создания проекта.Я создал две таблицы ресторанов и комментарии, используя следующий код:

CREATE TABLE restaurants (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
description TEXT NOT NULL,
image_url VARCHAR(255) NOT NULL,
created_at TIMESTAMP DEFAULT NOW()
);

INSERT INTO restaurants (name, description, image_url) VALUES 
(
    'test 1',
    'beautiful!!!!',
    'https://xxx.jpg'
),
(
    'test 2',
    'beautiful!!!!',
    'https://xxx.jpg'
),
(
    'test 3',
    'beautiful!!!!',
    'https://xxx.jpg'
);

CREATE TABLE comments (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
commentText TEXT NOT NULL,
created_at TIMESTAMP DEFAULT NOW(),
author VARCHAR(255) NOT NULL,
restaurant_id INT NOT NULL,
FOREIGN KEY (restaurant_id) 
  REFERENCES restaurants(id)
  ON DELETE CASCADE
);

INSERT INTO comments (commentText, author, restaurant_id) VALUES
('test for comment 1', 'aaron', '1'),
('test for comment 1', 'bob', '1'),
('test for comment 2', 'frank', '2'),
('test for comment 2', 'lisa', '2'),
('test for comment 3', 'aaron', '3'),
('test for comment 3', 'bob', '3');

Код маршрута для показа определенного ресторана с названием, изображением, описанием и комментариями выглядит следующим образом:

app.get("/restaurants/:id", function(req, res) {
   var id = req.params.id;
   connection.query('SELECT * FROM restaurants INNER JOIN  comments  ON (restaurants.id = comments.restaurant_id) WHERE restaurants.id = ? ',[id], function(err, result){
      if (err) throw err;
      var findRestaurant = {
          name: result[0].name,
          image_url: result[0].image_url,
          description: result[0].description,
          commentText: result.commentText,
          author: result.author
      };
      res.render("show", {restaurant: findRestaurant});
   });
});

Код show.ejs:

<% include partials/header %>

<h1><%= restaurant.name %></h1>

<img src = " <%= restaurant.image_url %>">

<p><%= restaurant.description %> </p>

<% for (var i = 0; i < restaurant.length; i++) { %>
    <p><strong><%= restaurant[i].author %></strong> - <%= restaurant[i].commentText %></p>
<% } %>

<% include partials/footer %>

Все работает, за исключением того, что на странице нет комментариев (имя, изображение и описание отображаются правильно на странице шоу, но не в комментариях).

С помощью

'ВЫБРАТЬ * ИЗ РЕСТОРАНОВ ВНУТРЕННЕЕ СОЕДИНЕНИЕ КОММЕНТАРИЙ ВКЛЮЧЕНО (restaurant.id = comments.restaurant_id) WHERE restaurant.id =?'

Текущий ресторан с соответствующими комментариями должен быть выбран, но, похоже, существует некоторая проблема при передаче данных в файл ejs.Заранее спасибо всем, кто может помочь мне решить эту проблему.

...