2014-04-29 5 views
11

Ich habe drei Tabellen Bauunternehmer, Projekte und jointable für diese beiden ist projects_contractors und ich erstellten Modelle und schrieb eine Beziehung wie unten,Sequelize in NodeJS: INNER JOIN Implementierung Failure

Contractor.hasMany(Project, {joinTableName: 'projects_contractors'}) 
    Project.hasMany(Contractor, {joinTableName: 'projects_contractors'}) 

ich diesen Auftragnehmer zugreifen möchten basierend Projekte bedeutet innere JOIN.

Kern Abfrage: wählen c.id, c.name, p.id, p.name von Auftragnehmern c inner join projects_contractors pc auf c.id = pc.contractor_id inner join Projekte p auf p.id = pc. project_id

Ich war bei der Umsetzung der unten genannten Code fehlgeschlagen. "required" ist ein Schlüsselwort, das für das interne JOIN verwendet wird, aber nicht funktioniert, wenn wir es behalten.

Wenn nicht beibehalten erforderlich, wird eine linke äußere JOIN bei Projekten und Auftragnehmern erstellt. Schlage mich mit einem Beispielbeispiel für das obige Szenario vor.

+0

Haben Sie versucht 'required: true'? –

+0

@MickHansen: Ja, ich habe versucht, aber unter Fehler angezeigt: Fehler enthalten. Erwartete Attribute: daoFactory, as! –

Antwort

17

Die korrekte Syntax lautet:

Contractor.findAll({ include: [{model: Project, required: true}]})

Im allgemeinen ist die umfassen params entweder ein Modell übernehmen, oder ein Objekt mit einem Modell-Parametern und optional als/erforderlich/include/where params.