node用express寫后端restful接口實戰七:模糊查詢


模糊搜索

這一節要來實現的是模糊搜索功能。依照手冊的教程,實現復雜的查詢,這里需要先引入一個叫做 Op 的東東。

var Op = models.Sequelize.Op

引入了以后,定義一個叫做 where 的空對象,里面保存需要查詢的條件。我們這里想對標題做查詢,所以先要來接收一下 title

如果用戶傳了 title 參數,那么我們就給 where 里添加一個 likelike 就是 的意思,它是 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

因為數據庫中,有兩條記錄,都有 IT 關鍵詞。所以這里,就有兩條記錄了。這就是模糊搜索功能一種最簡單的實現方式了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM