我如何searchnode.js?

我正在使用mongoosastic,它的工作正常,但我面临的问题是,如何从.post方法的对象,并将其传递给.get方法?

例如:

 router.post('/search', function(req, res, next) { Product.search({ something: 'Something'}, function(err, result) { if (err) return next(err); res.redirect('/search') // <--- How do i pass the result object? }); }); router.get('/search', function(req, res, next) { res.render('search'); }); 

我尝试了另一个接近我使用req.flash ,但我不喜欢这种做法。

你们是怎么解决这个问题的? 这是一个非常基本的search,用户search,然后将该用户redirect到另一个页面,它将显示find的结果或找不到。

您不需要使用GET将用户redirect到其他路由以发送响应。

您可以在.post服务请求,这是完全可以接受的。

POSTGET是两种forms的HTTP请求。 无论什么types的请求到达Web服务器,响应可能是任何事情。 它可能是一个redirect,或一个实际的网页,或其他types的东西,如错误。

我不认为你需要这个,但只是为了完成,search页面可能是一个不同的场景。 GET请求可以在浏览器中join书签,因为重新呈现页面所需要的只是URL。 但POST请求不能,因为它需要post参数以及在请求的正文中。 如果您想要让用户将结果join书签,或者将结果永久链接到同一页面,则可以在GET请求中提供请求(也是如此)。 在URL中添加一个额外的参数,例如?q=search-term ,例如…

这是一种通过GET请求发送参数。 /search路线还会捕获/search?q=search-termurl。 你可以使用req.query.q来访问它,它的值是"search-term" (更多信息请看这个问题 )。 因此,您可以修改表单以发送GET请求而不是POST( <form action="get">... ),或者可以使用GET将用户redirect回search页面,并沿着URL传递参数。 最后在GET请求中提供所有的search结果。

但是,再次,这是更先进的东西,你需要做什么,一般来说,无论是POST还是GET还是其他任何东西,都可以提供请求。