[英]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.