2016-07-28 8 views
1

Aufforderung zur Verwendung von JOIN in Sequelize? Ich habe den folgenden Code:Verwenden Sie JOIN in Sequelize

 db.User.findAll({ 
     attributes: ['id'], 
     where: {vipEnd: {lt: expiresVip}, vip: true}, 
     limit: 100, 
     order: 'id' 
    }).then(function(users) { 

In Bezug auf 4, sieht es wie folgt aus:

SELECT "vkId" AS "id" 
FROM "user" AS "user" 
WHERE "user"."vipEnd" < 1469699683 --expiresVip 
AND "user"."vip" = true 
ORDER BY id 
LIMIT '100'; 

Wie ein solches Ergebnis erreichen?

SELECT "vkId" AS "id" 
FROM "user" AS "user" 

LEFT JOIN "notification" ON "notification"."userId" = "user"."vkId" 

WHERE "user"."vipEnd" < 1469699683 
AND "user"."vip" = true 

AND "notification"."type" = 4 
AND "notification"."expiresVipDate" < 1469699683 

ORDER BY id 
LIMIT '100'; 

Vielen Dank!

Antwort

1

Sie müssen die Zuordnung für Modelle definieren. ex: db.User.hasMany(db.Notification, {foreignKey: 'UserId'}); Gebrauchseigenschaften sind in sequelize:

db.User.findAll({ 
include: [{ 
    model: db.Notification, 
    required: true//true INNER JOIN, false LEFT OUTER JOIN - default LEFT OUTER JOIN 
}]}).then(function(user) {}, function(err) { 
res.json(err, 400);}); 

Sie sollten mehr konsultieren hier http://docs.sequelizejs.com/en/latest/docs/associations/