2014-04-29 26 views
11

Mam trzy tabele wykonawców, projekty i jointable dla tych dwóch jest projects_contractors i stworzył modele i napisał relację jak poniżej,Sequelize w NodeJS: INNER JOIN Awaria realizacja

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

Chcę uzyskać dostęp do tego Wykonawcy w oparciu projekty oznaczają wewnętrzne DOŁĄCZ.

Zapytanie podstawowe: wybierz c.id, c.name, p.id, p.name od kontrahentów c wewnętrzny join projects_contractors pc na c.id = pc.contractor_id wewnętrzny dołącz projekty p na p.id = pc. project_id

Nie udało mi się wprowadzić poniższego kodu. "required" jest słowem kluczowym, które służy do wewnętrznego JOIN, ale nie działa, jeśli zachowamy.

 Contractor.findAll({ include: [Project, {required: false}]}).success(function(list){ 
     console.log("hi") 
     res.send(204) 
    }) 

Jeśli nie będzie to wymagane, utworzy lewe zewnętrzne JOIN dla projektów i kontrahentów. Zaproponuj mi przykładowy przykład dla powyższego senario.

+0

Czy próbowałeś 'required: true'? –

+0

@MickHansen: Tak, próbowałem, ale pokazując poniżej błąd: dołącz zniekształcone. Oczekiwane atrybuty: daoFactory, as! –

Odpowiedz

17

Prawidłowe składni:

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

ogół obejmują params się albo modelu lub obiektu z parametrem modelu i opcjonalnie co/wymagana/włączenia/Gdzie params.