2016-06-22 11 views
2

sequelizeの公式ドキュメントを検索したところ、 'separate'についてのエントリが見つかりませんでした。 https://readthedocs.org/search/?q=separatesequelizeの意味で「分離」とは何ですか?

Google検索も無駄です。

db.fooTable.find({ 
     where: { 
      id: id 
     }, 
     include: [{ 
      model: db.barTable1, 
      separate: true 
     }, { 
      model: db.barTable2, 
      separate: true 
     }, { 
      model: db.barTable3, 
      separate: true 
     }] 
    }) 

それが何を意味するのかを調べるために、私はfalseに「separate」に設定されますが、クエリの結果は、私が代わりに「true」を入れたときに同じでした。

答えて

5

私はcurrent codeでこれを見つけた:

、詳しく説明するためにのみhasManyの団体のためにサポートされ、関連するインスタンス、

を取得するために別のクエリを真実行している場合:デフォルトでは、取得するために、 SequelizeはSQL JOINを使用します。 separateを有効にすると、Sequelizeは関連するモデルごとに個別のクエリを実行し、結果のドキュメントをコードで結合します(データベースで結合を実行させるのではなく)。

は私がTagモデルへhasMany協会とProductモデル(「製品は、それに関連付けられている多くのタグを持つことができます」)があるとします。ここで

は、 "通常の" クエリです:

SELECT 
    `product`.`id`, 
    `product`.`title` 
FROM `products` AS `product`; 

SELECT 
    `id`, 
    `name`, 
    `productId` 
FROM `tags` AS `tag` 
WHERE 
    `tag`.`productId` IN (1); 
:ここ

SELECT 
    `product`.`id`, 
    `product`.`title`, 
    `tags`.`id` AS `tags.id`, 
    `tags`.`name` AS `tags.name`, 
    `tags`.`productId` AS `tags.productId` 
FROM `products` AS `product` 
LEFT OUTER JOIN `tags` AS `tags` 
ON 
    `product`.`id` = `tags`.`productId`; 

separate : trueクエリです

関連する問題