我正在使用sequelize ORM;一切都很好,很干净,但是当我将其与html" target="_blank">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查询?
User.hasMany(Post, {foreignKey: 'user_id'})
Post.belongsTo(User, {foreignKey: 'user_id'})
Post.find({ where: { ...}, include: [User]})
哪个会给你
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`;
与您发布的内容相比,上面的查询可能看起来有些复杂,但是它所做的基本上只是为用户表的所有列添加别名,以确保在返回时将它们放置在正确的模型中,而不与发布模型混淆
除此之外,您还会注意到它执行JOIN而不是从两个表中进行选择,但是结果应该是相同的
进一步阅读:
我正在使用sequelize ORM;一切都很好,很干净,但是当我将它用于查询时遇到了一个问题。我有两个模型:用户和帖子。 我想要一个查询响应与用户的信息,使它的帖子。在原始查询中,我得到这个: 我的问题是如何更改代码以使用ORM样式而不是SQL查询?
我正在尝试删除与表中一行相关联的行,而不删除主行(因此不能使用级联)。 这是一个原始的PostgreSQL查询,它实现了我想用SQL实现的功能。sequelize是否能够生成这样查询: 模型是(不包括不相关的列): 关联在SEQELIZE中定义为: 查询的另一个版本可以是: 但我认为sequelize还不能处理子查询? 我尝试了一些类似的方法: 然而,后遗症抱怨道: 错误:Model.Destro
问题内容: 我想用UNION和limit进行查询。 我可以在mysql上解释该查询。 我在Elasticsearch上尝试过 http:// localhost:9200 / test / table / _search?pretty&source = {%22query%22:{%22dis_max%22:{%22queries%22:[{%22query%22:{%22match%22:{%2
我试图在querydsl中匹配这个SQL查询 我知道如果联接到标识列中,如何进行左联接查询,但如果联接到两个可选列,则很难使其工作。tr.REQ_USERID和ab.USER_ID不是标识列 这是我的querydsl: 这将引发错误: 加入的预期路径![选择tripReq从com.TripReqtripReq左加入ADDR_BOOKaddressBook withtripReq.requestor
现在,如果有3个表涉及这样的东西,我希望这样做。 我的问题基本上是...是否可以在语句上执行3个表联接?正确的语法是什么?谢谢你。我做...
本文向大家介绍如何在Docker上使用OVS Bridge进行联网?,包括了如何在Docker上使用OVS Bridge进行联网?的使用技巧和注意事项,需要的朋友参考一下 OVS桥接器或Open vSwitch桥接器被用作Linux中本机桥接器的替代。它支持物理交换机中的大多数功能,同时还支持单个网桥上的多个vLAN。它也被广泛用于Docker网络中,因为与本地网桥相比,它被证明对多主机网络很有用