這是我想要獲取資料的表,我正在使用express從下一個應用程式發出獲取請求:
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[] }
我想取得提供者服務表的服務類型,而不是 serviceId,這是我的路線。
router.get('/list', async (req: Request, res: Response) => { const allClients = await prisma.client.findMany() res.json({allClients}) })
這就是我使用 axios 來取得其餘 API 資料的方式
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> )
目前只能取得提供者的serviceId,而不是服務的型別
P粉4574458582024-01-17 10:30:30
要從資料庫中的外鍵引用的另一個表中取得數據,您可以在 SQL 查詢中使用 JOIN
子句。 JOIN 子句可讓您根據資料表之間的相關欄位組合兩個或多個資料表中的行。
這就是如何使用JOIN
子句從兩個表(users
和orders
)獲取數據,這兩個表通過外鍵關聯.
SELECT users.*, orders.* FROM users JOIN orders ON orders.user_id = users.id
JOIN
子句根據 user_id
列組合 users
和 orders
表中的行。 code>orders 表格和 users
表中的 id
欄位。 SELECT
子句指定要從 users
和 orders
表中檢索的欄位。
已編輯 如何在 Express 路由和來自 axios 的 http 請求中引用它?
您可以使用sequelize.query(Sequelize是一個基於promise的Node.js ORM)方法來執行原始SQL查詢。
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); }); });
sequelize.query 方法用於執行原始 SQL 查詢,其中包含 JOIN 子句以從使用者和訂單表中取得資料。