Как передать дополнительные данные в партиал, который использует помощник {{#each}} в экспресс-руле? - PullRequest
0 голосов
/ 24 ноября 2018

Используя экспресс-руль, у меня есть помощник {{#each}}, который оборачивает партиал для отображения каждого сообщения от пользователя.Пока что соответствующий код для руля:

<div class="container">
 <div>

  {{#each post}}
   {{> posts/post-block}}
  {{/each}}

 </div>
</div>

, и это содержимое партиала:

<div class="single-post-container">

  <p class="d-inline">
      <span class="title">{{title}}</span>
      <a href="/user/{{User.id}}"><span class="float-right author">Submitted by: {{User.email}}</span></a>
  </p>
  <hr>
  <p class="post-body">
    {{body}}
  </p>

  {{#if_eq reqUserId User.id}}
    <button type="button" class="btn btn-warning">Delete</button>
  {{/if_eq}}

</div>

{{#if_eq}} к нижней части партиалапользовательская вспомогательная функция, которая проверяет, равны ли два заданных значенияВ этом случае я проверяю, просматривает ли текущий вошедший в систему пользователь (reqUserId) собственный пост или пост другого пользователя (User.Id).Если они просматривают свои собственные (reqUserId == User.Id), отобразите кнопку удаления.

Handlebars получает эти данные через Express, используя следующий код:

  app.get("/home", isAuthenticated, function (req, res) {
    db.Post.findAll({
      order: [
        ["id", "DESC"]
      ],
      include: [db.User]
    }).then(function (dbPost) {
      //console.log(dbPost);
      //console.log(req.user.id)
      res.render("index", {
        post: dbPost,
        reqUserId: req.user.id
      })
    })
  });

Моя проблема лежит на линии12 приведенного выше фрагмента кода.Поскольку партиал вызывается только для {{#each post}}, он никогда не получает данные reqUserId и кнопка никогда не отображается.Для пояснения, последний фрагмент кода использует sequelize для извлечения информации из базы данных, поэтому, к сожалению, reqUserId не может быть извлечен оттуда.Есть ли вокруг этого?

...