Sequelize-條件查詢


在上一篇文章當中都是針對單條數據的操作,那么本文主要介紹的內容都是基於查詢進行的,可以進行查詢多個,強調幾點,關於使用 Sequelize 連接 MySQL 相關部分的代碼這里就不在貼出來了,主要就是貼出相關核心代碼,方便參閱。

查詢多條數據

let users = await User.findAll();
console.log(users);

image-20220122092250254

經過對查詢的結果發現,查詢的內容不太的閱讀,我們使用到的其實就是 dataValues 當中的內容,其它的部分字段你自行需要使用自行獲取即可,這里方便參閱我這里就直接利用 map 進行過濾重新進行打印一下如下:

let users = await User.findAll();
console.log(users.map(u => u.dataValues));

image-20220122092626776

查詢指定列數據

改造之后可以很方便的進行對比數據,那么這里就還存在一個問題,就是以后我們如果只想要指定的一些字段那么該如何進行過濾呢,當然 findAll 當中是提供了對應的參數的,可以在第一個參數當中傳入一個對象,然后在該對象當中指定 attributes 屬性來確定需要查詢的字段信息即可:

let users = await User.findAll({
    attributes: ['name', 'age']
});
console.log(users.map(u => u.dataValues));

image-20220122092914287

條件查詢

這個條件查詢和前面的查詢差不多就是在 findAll 當中傳入一個對象參數,在該對象當中指定查詢關鍵字例如如下的一個簡單查詢:

let user = await User.findAll({
    where: {
        id: 1
    }
});
console.log(user.map(u => u.dataValues));

image-20220122093210399

但是呢,博主發現,如上指定的查詢條件都是等於的情況,那么 MySQL 當中有那么多的條件運算符,我們該如何進行指定呢,當然呢是有的,官方地址:https://sequelize.org/v5/variable/index.html#static-variable-Op

image-20220122093426048

博主這里就只是演示一下其中的部分,關於其它的都是參考博主給的這個栗子進行使用即可。

查詢大於等於指定值的數據

let user = await User.findAll({
    where: {
        age: {
            [Sequelize.Op.gte]: 33
        }
    }
});
console.log(user.map(u => u.dataValues));

image-20220122094024582

如上的代碼呢,博主是將 id 給去掉了的,那么如何我們將 id 不去掉那么查詢的結果又會是怎樣呢,如下:

let user = await User.findAll({
    where: {
        age: {
            [Sequelize.Op.gte]: 33
        },
        id: 1
    }
});
console.log(user.map(u => u.dataValues));

image-20220122094130974

通過查詢發現,是 AND 的關系,也就是並且的關系,那么我們如果想要指定 OR 的關系那么該如何進行指定呢,這個相比 AND 較為復雜,如下:

let user = await User.findAll({
    where: {
        [Sequelize.Op.or]: {
            age: 33,
            id: 3
        }
    }
});
console.log(user.map(u => u.dataValues));

image-20220122094317575


免責聲明!

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



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