Тот факт, что я не могу найти никого, кто задает этот вопрос, вероятно, означает, что я не совсем что-то понимаю или я ищу по неправильным ключевым словам, поэтому, пожалуйста, не откусывайте мне голову, если этоглупый вопрос.
Я вставляю соответствующие части кода, но если вы хотите сделать репозиторий полного примера, здесь это .Полный вопрос будет внизу.
Вот моя структура папок:
server.js
/components
Layout.js
/pages
contact.js
server.js
// tells next which page to load
server.get("/contact/:id", (req, res) => {
const actualPage = "/contact"
const queryParams = {id: req.params.id}
app.render(req, res, actualPage, queryParams)
})
// api uri for grabbing contacts from the database
server.get("/api/contact/:id", (req, res) => {
Contact.findOne({first_name: req.params.id}, (error, contact) => {
if (error) return next(error)
res.status(200).json(contact)
})
})
pages/contact.js
const Contact = props => (
<Layout>
<h1>{props.contact.first_name} {props.contact.last_name}</h1>
</Layout>
)
// a static async call passes fetched data into the props
Contact.getInitialProps = async function (context) {
const {id} = context.query
const res = await fetch(`http://localhost:3000/api/contact/${id}`)
const contact = await res.json()
return {contact: contact}
}
components/Layout.js
const Layout = (props) =>
<div>
<div>
<Link href="/contact/John">
<a>John</a>
</Link>
<Link href="/contact/Jed">
<a>Jed</a>
</Link>
<Link href="/contact/Fred">
<a>Fred</a>
</Link>
</div>
{props.children}
</div>
Я пытаюсьвыяснить, возможно ли динамический запрос к базе данных для построения навигации по документам в базе данных.Единственный способ, которым я могу подумать, это перерисовать всю навигацию с каждым компонентом, но это кажется крайне ненужным.Опять же, если вы хотите попробовать код, вот мой репозиторий .