Sertai Pertanyaan dengan Sequelize pada Node.js
Masalah:
Apabila menggunakan ORM Sequelize, bagaimana bolehkah kami melakukan pertanyaan gabungan untuk mendapatkan data daripada jadual berkaitan? Khususnya, bagaimanakah kita boleh mendapatkan semula siaran bersama-sama dengan maklumat pengguna yang berkaitan?
Penyelesaian:
1. Sertai Dalaman:
Untuk melakukan sambung dalam, kami menetapkan pilihan sertakan apabila membuat pertanyaan untuk model. Pilihan ini membolehkan kami menentukan model berkaitan yang ingin kami sertai. Secara lalai, Sequelize melakukan sambung luar kiri, jadi kami perlu menetapkan pilihan yang diperlukan kepada benar untuk sambung dalam.
Sebagai contoh, untuk mendapatkan semula semua siaran bersama-sama dengan maklumat pengguna yang berkaitan, kami boleh menggunakan pertanyaan berikut :
Posts.findAll({ include: [{ model: User, required: true }] }).then(posts => { // Process and return the posts along with the user information. });
2. Sertai Luar Kiri:
Untuk melakukan sambung luar kiri, kami meninggalkan pilihan yang diperlukan atau menetapkannya kepada palsu dalam pilihan sertakan. Ini akan membolehkan kami mendapatkan semula semua siaran, termasuk yang tidak mempunyai pengguna yang berkaitan.
Contohnya:
Posts.findAll({ include: [{ model: User, required: false }] }).then(posts => { // Process and return the posts, including those without user information. });
3. Menapis Keputusan Sertai:
Kita boleh menggunakan pilihan tempat dalam objek sertakan untuk menapis rekod yang berkaitan. Contohnya, untuk mendapatkan semula siaran milik pengguna yang lahir pada tahun 1984 sahaja, kami akan menggunakan:
Posts.findAll({ include: [{ model: User, where: { year_birth: 1984 } }] }).then(posts => { // Process and return the posts belonging to users born in 1984. });
4. Syarat Sertai Kompleks:
Kami juga boleh menentukan syarat gabungan kompleks menggunakan pilihan where. Contohnya, untuk mendapatkan semula siaran dengan nama "Sunshine" milik pengguna yang dilahirkan pada tahun yang sama dengan siaran itu dibuat, kami akan menggunakan:
Posts.findAll({ where: { name: "Sunshine" }, include: [{ model: User, where: ["year_birth = post_year"] }] }).then(posts => { // Process and return the posts matching the specified conditions. });
Rujukan Dokumentasi:
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Pertanyaan Sertai dengan Sequelize pada Node.js?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!