我正在使用续集 ORM;一切都很好而且很干净,但是当我将它与 join
查询一起使用时遇到了问题。我有两个模型:用户和帖子。
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);
});
我的问题是如何更改代码以使用 ORM 样式而不是 SQL 查询?
原文由 Jose Sosa 发布,翻译遵循 CC BY-SA 4.0 许可协议
哪个会给你
与您发布的内容相比,上面的查询可能看起来有点复杂,但它所做的基本上只是对 users 表的所有列进行别名处理,以确保在返回时将它们放入正确的模型中并且不会与帖子模型混淆
除此之外,您会注意到它执行 JOIN 而不是从两个表中进行选择,但结果应该相同
进一步阅读: