Rumah > Soal Jawab > teks badan
Ini adalah jadual yang saya ingin dapatkan data, saya menggunakan ekspres untuk membuat permintaan dapatkan daripada apl seterusnya:
model Provider { id String @id @default(cuid()) name String email String password String phone String photo String? service Service? @relation(fields: [serviceId], references: [id]) serviceId String? location Location? @relation(fields: [locationId], references: [id]) locationId String? createdAt DateTime @default(now()) text String starAverage Float medals Medals[] comment Comment[] } model Service { id String @id @default(cuid()) type String provider Provider[] }
Saya ingin mendapatkan jadual perkhidmatan pembekal jenis perkhidmatan dan bukannya serviceId, ini adalah laluan saya.
router.get('/list', async (req: Request, res: Response) => { const allClients = await prisma.client.findMany() res.json({allClients}) })
Ini adalah cara saya mendapatkan data API yang selebihnya menggunakan axios
const [providers, setProviders] = useState([] as any[]) useEffect(() => { axios.get('http://localhost:5140/providers/list')//my list of all providers .then(res => { console.log(res) setProviders(res.data) }).catch(err => { console.log(err) }) }, ) const renderedProviders = Object.values(providers).map(provider => { return ( <div className="card" style={{ width: "18rem"}} key={provider.id} > <img className="card-img-top" src="..."/> <div className="card-body"> <h3>{provider.name}</h3> <p>{provider.starAverage} estrekas</p> <p>{provider.serviceId}</p> </div> </div> ); }); return ( <div className="d-flex flex-row flex-wrap justify-content-between"> {renderedProviders} </div> )
Pada masa ini hanya serviceId penyedia boleh diperolehi, bukan jenis perkhidmatan
P粉4574458582024-01-17 10:30:30
Untuk mendapatkan data daripada jadual lain yang dirujuk oleh kunci asing dalam pangkalan data, anda boleh menggunakan klausa JOIN
dalam pertanyaan SQL anda. Klausa JOIN membolehkan anda menggabungkan baris daripada dua atau lebih jadual berdasarkan lajur yang berkaitan antara jadual.
Ini ialah cara menggunakan klausa JOIN
子句从两个表(users
和 orders
untuk mendapatkan data daripada dua jadual (pesanan
), yang berkaitan dengan kunci asing.
SELECT users.*, orders.* FROM users JOIN orders ON orders.user_id = users.idKlausa
JOIN
子句根据 user_id
列组合 users
和 orders
表中的行。 code>orders 表和 users
表中的 id
列。 SELECT
子句指定要从 users
和 orders
menggabungkan baris daripada jadual pengguna
dan order
berdasarkan lajur user_id
. Lajur id
dalam jadual kod>pesanan dan jadual pengguna
. Klausa SELECT
menentukan lajur untuk diambil daripada jadual pengguna
dan order
.
Diedit Bagaimanakah saya boleh merujuknya dalam laluan Ekspres dan permintaan http daripada axios?
Anda boleh menggunakan kaedah sequelize.query (Sequelize ialah kaedah Node.js ORM berasaskan janji) untuk melaksanakan pertanyaan SQL mentah.
app.get('/users/:id', (req, res) => { const { id } = req.params; const query = ` SELECT users.*, orders.* FROM users JOIN orders ON orders.user_id = users.id WHERE users.id = :id `; const replacements = { id }; sequelize.query(query).then(([results, metadata]) => { res.send(results); }); });
kaedah sequelize.query digunakan untuk melaksanakan pertanyaan SQL mentah dengan klausa JOIN untuk mendapatkan data daripada pengguna dan jadual pesanan.