Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Sequelize:nhiều mệnh đề where

Tôi giả sử rằng bạn hỏi về cách Sequelize để thực hiện truy vấn, tôi không chắc liệu tôi có hiểu chính xác câu hỏi của bạn hay không. Bạn đang tìm kiếm hai truy vấn:

  • Truy vấn tất cả các bài viết của những người dùng được theo dõi,
  • Truy vấn quốc gia / thẻ / bài viết đã đăng ký của người dùng cụ thể,

Hãy để tôi bắt đầu với sự liên kết giữa các mô hình.

// 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' });

Với việc sử dụng liên kết trên, giờ đây chúng tôi có thể truy vấn tất cả các bài viết của những người dùng được theo dõi

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
});

Truy vấn trên sẽ tạo ra kết quả tương tự như

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

Nếu bạn muốn truy vấn quốc gia / thẻ / bài viết được đăng ký bởi người dùng cụ thể, bạn sẽ phải tạo một liên kết khác trong Subscribe mô hình

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

Bây giờ chúng tôi có tất cả các liên kết cần thiết để thực hiện truy vấn thứ hai mà bạn đã yêu cầu

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
});

Trong ví dụ này, bạn có được người dùng với tất cả các đăng ký của anh ấy được truy cập thông qua user.Subscribes , sẽ có các thuộc tính lồng nhau Tag , CountryArticle . Nếu người dùng đã đăng ký Tag , cả CountryArticle sẽ là NULL trong trường hợp này.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chuyển đổi MySQL sang MySQLi đơn giản nhất

  2. Các phương pháp hay nhất về xóa mềm (PHP / MySQL)

  3. DATALENGTH () Tương đương trong MySQL là gì?

  4. Làm thế nào để gợi ý chỉ mục để sử dụng trong truy vấn chọn MySQL?

  5. Làm cách nào để CHỌN nhanh 3 bản ghi ngẫu nhiên từ một bảng MySQL 30k với bộ lọc where bằng một truy vấn duy nhất?