Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在node.js中搜索?_Javascript_Node.js - Fatal编程技术网

Javascript 如何在node.js中搜索?

Javascript 如何在node.js中搜索?,javascript,node.js,Javascript,Node.js,我正在使用Mongoostic,它工作正常,但我面临的问题是,如何从.post方法获取对象并将其传递给.get方法 例如: router.post('/search', function(req, res, next) { Product.search({ something: 'Something'}, function(err, result) { if (err) return next(err); res.redirect('/search') // <

我正在使用Mongoostic,它工作正常,但我面临的问题是,如何从
.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');
});
router.post('/search',函数(req,res,next){
搜索({something:'something'},函数(err,result){
if(err)返回next(err);

res.redirect('/search')/您不需要使用GET将用户重定向到另一个路由来发送响应

您可以在
.post
中提供请求,这是完全可以接受的

POST
GET
是两种形式的HTTP请求。无论web服务器收到何种类型的请求,响应都可能是任何内容。它可能是重定向,也可能是实际的网页,或者其他类型的内容,例如错误

我认为您不需要这样做,但为了完整起见,对于搜索页面,可能会出现另一种情况。GET请求可以在浏览器中添加书签,因为重新呈现页面所需的只是URL。但是POST请求不能,因为它还需要请求正文中的POST参数。如果您想让用户发出嘘声K使用结果标记页面或使用结果永久链接到同一页面,您也可以在GET请求中为请求提供服务。例如,在URL中添加一个额外参数,如
?q=搜索词

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


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

为什么您没有一个处理它的函数?(意味着GET函数和POST函数都会调用一个公共函数)为什么需要将其传递给get函数?这是后端代码还是前端代码,看起来像express?req.search=result;?然后在get('/search')中,您可以访问req.search。这是基本的中间件方法。将中间件想象为一系列过滤器,处理您的请求,添加、删除、修改数据。这就是您想要做的?将搜索结果添加到请求中?为什么要这样做?您可以在
post
@SoluableNonagon i中提供请求t是后端,使用express。js@Ludo,所以我需要创建一个自定义中间件?嘿,阿米尔,谢谢你的详细解释,但是如果你展示一些示例,可以吗,因为目前我很困惑。我创建了一个github gist@JackMoscovi。代码实际上取决于你的整个项目,所以不要期望代码工作,它只是给你一个想法。如果这回答了你的问题,考虑投票并将其标记为未来访问者的答案: