ORM을 sequelize로 사용하고 있습니다. 모든 것이 훌륭하고 깨끗하지만, join
쿼리와 함께 사용할 때 문제가있었습니다. 두 가지 모델, 즉 사용자와 게시물이 있습니다.nodejs에서 sequelize를 사용하여 join querys를 작성하는 방법
var User = db.seq.define('User',{
username: { type: db.Sequelize.STRING},
email: { type: db.Sequelize.STRING},
password: { type: db.Sequelize.STRING},
sex : { type: db.Sequelize.INTEGER},
day_birth: { type: db.Sequelize.INTEGER},
month_birth: { type: db.Sequelize.INTEGER},
year_birth: { type: db.Sequelize.INTEGER}
});
User.sync().success(function(){
console.log("table created")
}).error(function(error){
console.log(err);
})
var Post = db.seq.define("Post",{
body: { type: db.Sequelize.TEXT },
user_id: { type: db.Sequelize.INTEGER},
likes: { type: db.Sequelize.INTEGER, defaultValue: 0 },
});
Post.sync().success(function(){
console.log("table created")
}).error(function(error){
console.log(err);
})
나는 그것을 만든 사용자의 정보로 게시물에 응답하는 쿼리를 원합니다. 원시 쿼리에서 나는이 얻을 :
db.seq.query('SELECT * FROM posts, users WHERE posts.user_id = users.id ').success(function(rows){
res.json(rows);
});
내 질문은 어떻게 SQL 쿼리 대신 ORM 스타일을 사용하도록 코드를 변경할 수 있습니까? 쿼리가 위의 당신이 무엇을 게시에 비해 조금 복잡하게 보일 수 있습니다 당신에게
SELECT
`posts`.*,
`users`.`username` AS `users.username`, `users`.`email` AS `users.email`,
`users`.`password` AS `users.password`, `users`.`sex` AS `users.sex`,
`users`.`day_birth` AS `users.day_birth`,
`users`.`month_birth` AS `users.month_birth`,
`users`.`year_birth` AS `users.year_birth`, `users`.`id` AS `users.id`,
`users`.`createdAt` AS `users.createdAt`,
`users`.`updatedAt` AS `users.updatedAt`
FROM `posts`
LEFT OUTER JOIN `users` AS `users` ON `users`.`id` = `posts`.`user_id`;
를 제공하지만 기본적으로 그냥 확인하기 위해 사용자 테이블의 모든 열을 앨리어싱 그것이 무엇을하는 것은
감사 남자. –
1984 년 출생 한 사용자 만 가입하려면 어떻게해야합니까? SQL에서 나는 다음과 같이 할 것이다 :'SELECT * FROM posts users on user.id = posts.user_id where users.year_birth = 1984' – Iwazaru
@Iwazaru 답이 너무 길어서 의견에 맞지 않을 경우 새로운 질문을 열어주세요 –