繁体   English   中英

如何在node.js中搜索?

[英]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提供请求,这是完全可以接受的。

POSTGET是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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM