[英]How do i search in node.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
,但是我不太喜欢这种方法。
你们是如何解决这个问题的? 这是一个非常基本的搜索,即用户搜索,然后将用户重定向到另一个页面,该页面将显示找到的结果或找不到。
您无需使用GET将用户重定向到其他路由即可发送响应。
您可以在.post
提供请求,这是完全可以接受的。
POST
和GET
是HTTP请求的两种形式。 无论Web服务器收到哪种类型的请求,响应都可以是任何东西。 它可以是重定向,也可以是实际的网页,也可以是其他类型的东西,例如错误。
我认为您不需要这样做,只是为了完整起见,对于搜索页面而言,情况可能会有所不同。 可以在浏览器中为GET请求添加书签,因为重新呈现页面所需要做的只是URL。 但是POST请求不能,因为它还需要在请求正文中的post参数。 如果要让用户使用结果将页面添加为书签,或使用永久链接指向结果的同一页面,则也可以在GET请求中提供该请求。 例如,向URL添加一个额外的参数,例如?q=search-term
……
这是通过GET请求发送参数的一种。 /search
路由还将捕获/search?q=search-term
网址。 您可以使用req.query.q
对其进行req.query.q
,其值为"search-term"
(有关更多信息, req.query.q
问题 )。 因此,您可以修改表单以发送GET请求而不是POST( <form action="get">...
),也可以使用GET将用户重定向回搜索页面,并沿URL传递参数。 最后,将所有搜索结果提供给GET请求。
但是,这又是更高级的东西,对于您需要做的事情,通常,服务请求是好事,无论是POST还是GET或其他任何东西。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.