如何在node.js中搜索

How do i search in node.js?

本文关键字:搜索 js node      更新时间:2023-09-26

我使用mongoastic,它运行良好,但我面临的问题是,如何从.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中提供请求,这是完全可以接受的。

CCD_ 5和CCD_ 6是HTTP请求的两种形式。无论web服务器收到什么类型的请求,响应都可以是任何内容。它可以是重定向,也可以是实际的网页,或者其他类型的东西,比如错误。

我认为你不需要这个,但为了完整,对于搜索页面来说,这可能是一个不同的场景。GET请求可以在浏览器中添加书签,因为重新呈现页面所需的只是URL。但是POST请求不可能,因为它还需要请求正文中的POST参数。如果您想让用户为带有结果的页面添加书签,或者拥有指向带有结果的同一页面的永久链接,那么您也可以在GET请求中提供请求。例如,在URL中添加一个像?q=search-term这样的额外参数。。。

这是一种通过GET请求发送参数的方式。/search路由也将捕获/search?q=search-term URL。您可以使用req.query.q访问它,它的值为"search-term"(有关更多信息,请参阅此问题)。因此,您可以修改表单以发送GET请求而不是POST(<form action="get">...),也可以使用GET将用户重定向回搜索页面,并沿URL传递参数。最后在GET请求中提供所有搜索结果。

但同样,这是更高级的东西,对于您需要做的事情,一般来说,无论是POST、GET还是其他什么,都可以为请求提供服务。