Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Sequelize:beberapa klausa where

Saya berasumsi bahwa Anda bertanya tentang cara Sequelize melakukan kueri. Saya tidak yakin apakah saya memahami pertanyaan Anda dengan benar. Anda mencari dua pertanyaan:

  • Kueri semua artikel dari pengguna yang diikuti,
  • Kueri negara/tag/artikel langganan pengguna tertentu,

Mari saya mulai dengan asosiasi yang dibuat antara model.

// in User model definition
User.belongsToMany(User, { as: 'Followers', through: 'Followers', foreignKey: 'userId', otherKey: 'followId' });
User.hasMany(Subscribe, { foreignKey: 'userId' });
User.hasMany(Article, { foreignKey: 'userId' });

Dengan menggunakan asosiasi di atas, kami sekarang dapat menanyakan semua artikel dari pengguna yang diikuti

models.User.findByPrimary(1, {
    include: [
        {
            model: models.User,
            as: 'Followers',
            include: [ models.Article ]
        }
    ]
}).then(function(user){
    // here you have user with his followers and their articles
});

Permintaan di atas akan menghasilkan hasil yang mirip dengan

{
    id: 1,
    Followers: [
        {
            id: 4,
            Articles: [
                {
                    id: 1,
                    title: 'article title' // some example field of Article model
                }
            ]
        }
    ]
}

Jika Anda ingin menanyakan negara/tag/artikel yang dilanggan oleh pengguna tertentu, Anda harus membuat asosiasi lain di Subscribe model

// in Subscribe model definition
Subscribe.belongsTo(Tag, { foreignKey: 'tagId' });
Subscribe.belongsTo(Article, { foreignKey: 'articleId' });
Subscribe.belongsTo(Country, { foreignKey: 'payId' });

Sekarang kami memiliki semua asosiasi yang diperlukan untuk melakukan kueri kedua yang Anda minta

models.User.findByPrimary(1, {
    include: [
        {
            model: models.Subscribe,
            include: [ models.Tag, models.Country, models.Article ]
        }
    ]
}).then(function(user){
    // here you get user with his subscriptions
});

Dalam contoh ini Anda mendapatkan pengguna dengan semua langganannya diakses melalui user.Subscribes , yang akan memiliki atribut bersarang Tag , Country dan Article . Jika pengguna berlangganan Tag , keduanya Country dan Article akan menjadi NULL dalam hal ini.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql SQL:item spesifik untuk menjadi yang pertama dan kemudian mengurutkan item lainnya

  2. MYSQL, pesanan sangat lambat oleh

  3. Apa cara terbaik untuk menyisipkan dan memperbarui tabel baris tunggal di MySQL?

  4. Perlu memilih hanya data yang berisi garis miring terbalik di MySQL

  5. Cara Menemukan Baris ke-n di MySQL