簡體   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