2014-04-29 19 views
11

Tôi có ba bảng thầu, các dự án và jointable cho hai số này là projects_contractors và tôi tạo ra các mô hình và đã viết một mối quan hệ như dưới đây,Sequelize trong NodeJS: Nội THAM GIA thực hiện Failure

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

tôi muốn truy cập thầu này dựa các dự án có nghĩa là bên trong JOIN.

Truy vấn chính: chọn c.id, c.name, p.id, p.name từ nhà thầu c tham gia bên trong projects_contractors pc trên c.id = pc.contractor_id các dự án tham gia bên trong p trên p.id = pc. project_id

Tôi đã không thực hiện được mã bên dưới. "required" là một từ khóa được sử dụng cho JOIN bên trong nhưng không hoạt động nếu chúng ta giữ nguyên.

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

Nếu không yêu cầu, nó sẽ tạo ra bên ngoài bên trái THAM GIA các dự án và nhà thầu. Đề nghị tôi với một ví dụ mẫu cho senario ở trên.

+0

Bạn đã thử 'required: true' chưa? –

+0

@MickHansen: Có, tôi đã thử, nhưng hiển thị lỗi dưới đây: Bao gồm không đúng định dạng. Các thuộc tính mong đợi: daoFactory, như! –

Trả lời

17

Cú pháp đúng là:

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

Nói chung bao gồm params mất hoặc là một mô hình, hoặc một đối tượng với một tham số mô hình và tùy chọn như là/cần/include/nơi params.

Các vấn đề liên quan