2017-02-14 2 views
0

Ich versuche herauszufinden, wie Sie Beziehungen in Sequelize abfragen. Lassen Sie uns sagen, ich habe eine UserModel und eine IssueModel, und sie haben jeweils eine belongsToMany Beziehung miteinander. Ich möchte eine Anfrage an diesen Effekt:Sequelize Query innerhalb von doestigoToMany Relationen

SELECT 
    ..., 
    (
     EXISTS(
      SELECT 1 
      FROM user_issues 
      WHERE user_issues.user_id = <some_id> 
       AND user_issues.issue_id = issue.id 
     ) 
    ) AS isSubscribed 

Das einzige Material, das ich im Stande gewesen bin in der Dokumentation über die Beziehungen zu finden, ist die include Option, aber nichts auf dieser Art von berechnetem Elemente

+0

Alles, was ich jetzt denken kann, ist [ 'countAssociations'] (http://docs.sequelizejs.com/en/latest/api/associations/belongs-to-many/#countassociationsoptions-promiseint) Methode der 'gehört zuMany' Relation. In einem solchen Fall wäre es 'user.countIssues()' – piotrbienias

+0

Das ist in der Nähe, aber es würde eine separate Abfrage erfordern. Nicht das Ende der Welt, aber skaliert nicht gut, wenn mehrere Probleme auftreten. –

Antwort

0

Sie müssen Gehen Sie folgendermaßen vor

User.findAll({ 
    attributes: ['User.*', 'Issue.*', [sequelize.fn('COUNT', sequelize.col('Issue.id')), 'PostCount']], 
    include: [Issue] 
} 
+0

Das ist irgendwie rückwärts; Nach was ich suche, ist ein Boolean auf dem Problem, das bestimmt, wenn ein bestimmter Benutzer ihm zugeordnet wird, nicht eine Zählung der Probleme, die dem Benutzer zugeordnet werden. –