Node.jsでSequelizeを使用して結合クエリを作成する方法

ホセ・ソーサ

私は続編ORMを使用しています。すべてが素晴らしくてきれいですが、joinクエリで使用すると問題が発生しましたユーザーと投稿の2つのモデルがあります。

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スタイルを使用するようにコードを変更するにはどうすればよいですか?

Jan Aagaard Meier
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`;

上記のクエリは、投稿したものと比べると少し複雑に見えるかもしれませんが、基本的には、usersテーブルのすべての列にエイリアスを付けて、返されるときに正しいモデルに配置され、投稿モデルと混同されないようにします。

それ以外は、2つのテーブルから選択する代わりに結合を実行することに気付くでしょうが、結果は同じであるはずです。

参考文献:

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

node.jsを使用してsequelizeで内部結合クエリを制御する方法は?

分類Dev

node.jsを使用してmysqlで多数のクエリを作成する方法

分類Dev

node.jsを使用してデータベースからのクエリ結果をHTMLで表示する方法

分類Dev

Node.jsを使用してAzureCosmosDBでSQLクエリを実行する方法

分類Dev

Node.jsでhtpasswdを使用してリクエストを認証する方法

分類Dev

NodeのPostgresでSequelizeリクエストを使用して日付範囲でクエリを実行する

分類Dev

Node.jsでSequelizeを使用してANDおよびOr演算子を実行する方法

分類Dev

Node.jsで画像をリクエストして画像を出力する方法

分類Dev

Node.JSを使用してMySQLをクエリし、結果をWebページに表示する

分類Dev

Node.jsでCloudSpannerを使用してクエリを補間する

分類Dev

AXIOS(Node.js)を使用してリクエスト間でCookieを保持する

分類Dev

複数のクエリを使用してNode.jsでJSONを構築する

分類Dev

NodeアプリケーションでKnex.jsを使用してANDで内部結合を構築する

分類Dev

node.jsでgraphicsmagickを使用して円の画像をトリミングする方法(他の方法を使用してnode.jsでこれを作成する)

分類Dev

node.jsでgraphicsmagickを使用して円の画像をトリミングする方法(他の方法を使用してnode.jsでこれを作成する)

分類Dev

curlを使用してNode.jsExpressをクエリする方法

分類Dev

Node.jsとExpressを使用してunirestGETリクエストを作成します

分類Dev

Node.jsでpgを使用してPostgresqlデータベースを適切にクエリする方法は?

分類Dev

node.jsのルートでLIKE(正規表現)を使用してmongodbをクエリする方法は?

分類Dev

Node.jsを使用してHTTPリクエストでJavaScript名をフォローする方法は?

分類Dev

sequelize(node.js express)のインクルードでmodels.sequelize.col()を使用しているときに、あいまいなエラーが発生します

分類Dev

Node.jsクエリを使用して2つのPostgresデータベーステーブルを結合する

分類Dev

Node.jsを使用してhttp(s)リクエストをLocalTunnelでホストされているNode.jsサーバーに送信する方法

分類Dev

Sequelizeを使用してNode.JSモデルを実装する方法

分類Dev

node.jsを使用してgithubリポジトリのクローンを作成する方法

分類Dev

async / awaitを使用してnode.jsでReadStreamを非同期的に作成する方法

分類Dev

node.jsを使用してmongodbからエントリを取得する方法

分類Dev

node.jsコードを使用してFirestoreでコレクションを作成する方法

分類Dev

Node.js用のHyperledgerClientSDKを使用するときにクエリの結果を復号化する方法

Related 関連記事

  1. 1

    node.jsを使用してsequelizeで内部結合クエリを制御する方法は?

  2. 2

    node.jsを使用してmysqlで多数のクエリを作成する方法

  3. 3

    node.jsを使用してデータベースからのクエリ結果をHTMLで表示する方法

  4. 4

    Node.jsを使用してAzureCosmosDBでSQLクエリを実行する方法

  5. 5

    Node.jsでhtpasswdを使用してリクエストを認証する方法

  6. 6

    NodeのPostgresでSequelizeリクエストを使用して日付範囲でクエリを実行する

  7. 7

    Node.jsでSequelizeを使用してANDおよびOr演算子を実行する方法

  8. 8

    Node.jsで画像をリクエストして画像を出力する方法

  9. 9

    Node.JSを使用してMySQLをクエリし、結果をWebページに表示する

  10. 10

    Node.jsでCloudSpannerを使用してクエリを補間する

  11. 11

    AXIOS(Node.js)を使用してリクエスト間でCookieを保持する

  12. 12

    複数のクエリを使用してNode.jsでJSONを構築する

  13. 13

    NodeアプリケーションでKnex.jsを使用してANDで内部結合を構築する

  14. 14

    node.jsでgraphicsmagickを使用して円の画像をトリミングする方法(他の方法を使用してnode.jsでこれを作成する)

  15. 15

    node.jsでgraphicsmagickを使用して円の画像をトリミングする方法(他の方法を使用してnode.jsでこれを作成する)

  16. 16

    curlを使用してNode.jsExpressをクエリする方法

  17. 17

    Node.jsとExpressを使用してunirestGETリクエストを作成します

  18. 18

    Node.jsでpgを使用してPostgresqlデータベースを適切にクエリする方法は?

  19. 19

    node.jsのルートでLIKE(正規表現)を使用してmongodbをクエリする方法は?

  20. 20

    Node.jsを使用してHTTPリクエストでJavaScript名をフォローする方法は?

  21. 21

    sequelize(node.js express)のインクルードでmodels.sequelize.col()を使用しているときに、あいまいなエラーが発生します

  22. 22

    Node.jsクエリを使用して2つのPostgresデータベーステーブルを結合する

  23. 23

    Node.jsを使用してhttp(s)リクエストをLocalTunnelでホストされているNode.jsサーバーに送信する方法

  24. 24

    Sequelizeを使用してNode.JSモデルを実装する方法

  25. 25

    node.jsを使用してgithubリポジトリのクローンを作成する方法

  26. 26

    async / awaitを使用してnode.jsでReadStreamを非同期的に作成する方法

  27. 27

    node.jsを使用してmongodbからエントリを取得する方法

  28. 28

    node.jsコードを使用してFirestoreでコレクションを作成する方法

  29. 29

    Node.js用のHyperledgerClientSDKを使用するときにクエリの結果を復号化する方法

ホットタグ

アーカイブ