Heim > Fragen und Antworten > Hauptteil
Dies ist die Tabelle, aus der ich die Daten abrufen möchte. Ich verwende Express, um die Abrufanforderung von der nächsten App zu stellen:
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[] }
Ich möchte anstelle der Service-ID den Servicetyp der Anbieter-Servicetabelle erhalten. Dies ist meine Route.
router.get('/list', async (req: Request, res: Response) => { const allClients = await prisma.client.findMany() res.json({allClients}) })
So erhalte ich die restlichen API-Daten mit 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> )
Derzeit kann nur die Service-ID des Anbieters abgerufen werden, nicht die Art des Dienstes
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 子句以从用户和订单表中获取数据。