用子选择Sequelize JS自定义查询

时间:2015-02-18 00:07:33

标签: javascript node.js postgresql orm sequelize.js

我是ORM的新手,我不知道使用ORM来做这件事。 考虑到我有5个表:

标记,拍卖,用户,user_tag和auction_tag

我正在使用SequelizeJS,我怎样才能得到这样的查询?

select  A.id, A.title, A.content, A.createdAt, U.id, U.picture, U.name
from    Auction A, User U, User U2
where   A.userId = U.id and U2.id = x
and     exists (select  AT.id
            from    Auction_Tag AT
            where   AT.auction = A.id
            and     AT.tag in ( select  T.id
                                from    Tag T, User_Tag UT
                                where   U2.id = UT.user
                                and     UT.tag = T.id
                              )
           );

有什么想法吗?谢谢你们

1 个答案:

答案 0 :(得分:1)

使用orm假设从查询语言本身中抽象出来。 如果您愿意执行嵌套请求,则应使用必须传递给findAll方法的options对象的“where”属性。 我无法从你提供的信息中推断出你的结构,所以我在最好的猜测中给出了一个例子(拍卖你的拍卖模型和用户ID将id与用户联系起来):

Auction.findAll({where: { userid: 8 }}).done(callback);

但是,如果你想要一个相关的实体参数,那就说User.name,去吧:

Auction.findAll({where: { 'User.name': 'John' }}).done(callback);

如果您发现自己使用SQL查询,也许您应该考虑不使用ORM。