Рендеринг каждого из нескольких объектов в массиве с помощью Express в Node.js - PullRequest
0 голосов
/ 01 сентября 2018

У меня есть несколько объектов в массиве местных жителей в моем routes, и я хочу рендерить каждый из них одновременно.

Пример

// routes.js

const routes = {
  path: '/posts/:id',
  view: 'posts',
  locals: [
    {
      id: 'how-to-write-short',
      title: 'How to write short',
      description: 'The art of painting a thousand pictures with just a few words',
      date: '23 Mar 2018',
      issue: '1'
    },
    {
      id: 'the-glamour-of-grammar',
      title: 'The glamour of grammar',
      description: 'A guide to the magic and mystery of practical English',
      date: '01 April 2018',
      issue: '2'
    }
  ]
}

Прямо сейчас, это делает последние объекты в массиве, когда я захожу по ссылке http://localhost:3000/posts/how-to-write-short или http://localhost:3000/posts/the-glamour-of-grammar.

// server.js

const express = require('express')
const routes = require('./routes')

const app = express()

app.set('views', 'src/pages')
app.set('view engine', 'js')
app.engine('js', require('./engine'))

app.get(routes.path, function(req, res) {
    res.render(routes.view, routes.locals)
})

app.listen(3000)

Что лучше визуализировать каждый, например, routes.locals[0], routes.locals[1] и ...?

Ответы [ 2 ]

0 голосов
/ 01 сентября 2018

Оптимальным способом является поиск идентификатора поста и передача его рендеру:

app.get(routes.path, (req, res) => {
  const id = req.params.id;
  const post = routes.locals.find(p => p.id === id);
  if (post) {
    res.render(routes.view, post);
  } else {
    res.render(routes.post_not_found_view);
  }
});
0 голосов
/ 01 сентября 2018

Вы можете сделать следующее:

В вашем коде

app.get(routes.path, function(req, res) {
    res.render(routes.view, routes.locals)
})

возьмите из запроса идентификатор и передайте его res.render. Затем вы должны выбрать только тот регион, который вас интересует, и это должно помочь.

app.get(routes.path, function(req, res) {
    const id = req.params.id;
    const local = routes.locals.filter(local => local.id === id)
    res.render(routes.view, local)
})

Надеюсь, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...