在 Sequelize 中使用 JOIN
Posted
技术标签:
【中文标题】在 Sequelize 中使用 JOIN【英文标题】:Use JOIN in Sequelize 【发布时间】:2016-12-02 17:58:10 【问题描述】:提示如何 ? 我有以下代码:
db.User.findAll(
attributes: ['id'],
where: vipEnd: lt: expiresVip, vip: true,
limit: 100,
order: 'id'
).then(function(users)
就4而言,是这样的:
SELECT "vkId" AS "id"
FROM "user" AS "user"
WHERE "user"."vipEnd" < 1469699683 --expiresVip
AND "user"."vip" = true
ORDER BY id
LIMIT '100';
如何达到这样的效果?
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';
谢谢!
【问题讨论】:
【参考方案1】:您需要为模型定义关联。
前任:
db.User.hasMany(db.Notification, foreignKey: 'UserId');
使用 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););
您应该在这里咨询更多 http://docs.sequelizejs.com/en/latest/docs/associations/
【讨论】:
以上是关于在 Sequelize 中使用 JOIN的主要内容,如果未能解决你的问题,请参考以下文章
在使用 Sequelize 作为 ORM 的 Sails 应用程序中使用原始查询