Estoy tratando de enviar múltiples variables a un res.render pero no estoy seguro de cómo hacerlo sin un error indefinido. Uno u otro tendrán un objeto por el que pasar pero nunca los dos al mismo tiempo. Aquí está mi código actual que dará un error indefinido.
app.get('/', async (req, res) => { if (req.query.search) { const search = req.query.search const regex = new RegExp(search, 'i') const searchedblogposts = await BlogPost.find({title: {$regex: regex}}) console.log(searchedblogposts) } else { const blogposts = await BlogPost.find({}) } res.render('index', { blogposts, searchedblogposts }) })Bueno, esto se debe a que blogPosts o searchBlogPosts permanecen indefinidos en cualquier momento y estás pasando ambos en res.render . Lo que puedes hacer es esto:
app.get('/', async (req, res) => { let blogPosts; if (req.query.search) { const search = req.query.search const regex = new RegExp(search, 'i') blogPosts = await BlogPost.find({title: {$regex: regex}}) } else { blogposts = await BlogPost.find({}) } res.render('index', { blogposts, }) })O esto:
app.get('/', async (req, res) => { const blogPosts = req.query.search? await BlogPost.find({title: {$regex: new RegExp(req.query.search, 'i')}}) : await BlogPost.find({}) res.render('index', { blogposts, }) })