node用express寫後端restful介面實戰七:模糊查詢
阿新 • • 發佈:2020-10-20
模糊搜尋
這一節要來實現的是模糊搜尋功能。依照手冊的教程,實現複雜的查詢,這裡需要先引入一個叫做 Op
的東東。
var Op = models.Sequelize.Op
引入了以後,定義一個叫做 where
的空物件,裡面儲存需要查詢的條件。我們這裡想對標題做查詢,所以先要來接收一下 title
。
如果使用者傳了 title
引數,那麼我們就給 where
裡新增一個 like
。like
就是 像
的意思,它是 SQL
語句中的語法。 然後前後各放了一個 %
,前面有百分號,表示關鍵詞,前面可以有其他文字。後面有百分號,就表示關鍵詞後面,可以跟著其他文字。
條件寫好了以後,就到 findAll
where
引數。
router.get('/', async function (req, res, next) { // 搜尋 var where = {}; // 模糊查詢標題 var title = req.query.title; if (title) { where.title = { [Op.like]: '%' + title + '%' } } var articles = await models.Article.findAll({ order: [['id', 'DESC']], where: where }); res.json({articles: articles}); });
查詢 天氣
現在來試試看,開啟 Postman
,用 GET
方式請求 http://localhost:3000/articles?title=天氣
因為 天氣
關鍵詞,就一條記錄,所以出來的就只有這一條了。
查詢 IT
再來請求 http://localhost:3000/articles?title=IT 試試
因為資料庫中,有兩條記錄,都有 IT
關鍵詞。所以這裡,就有兩條記錄了。這就是模糊搜尋
功能一種最簡單的實現方式了。