C'est la table à partir de laquelle je souhaite récupérer les données, j'utilise express pour faire la demande d'obtention depuis la prochaine application :
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[] }
Je souhaite obtenir le type de service de la table de service du fournisseur au lieu de serviceId, c'est mon itinéraire.
router.get('/list', async (req: Request, res: Response) => { const allClients = await prisma.client.findMany() res.json({allClients}) })
C'est ainsi que j'obtiens le reste des données API en utilisant 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> )
Actuellement, seul le serviceId du fournisseur peut être obtenu, pas le type de service
Pour obtenir les données d'une autre table référencée par une clé étrangère dans la base de données, vous pouvez utiliser la clause
JOIN
dans votre requête SQL. La clause JOIN vous permet de combiner des lignes de deux ou plusieurs tables en fonction des colonnes liées entre les tables.Voici comment utiliser la clause
La clauseJOIN
子句从两个表(users
和orders
pour obtenir les données de deux tables (users
etorders
), qui sont liées par une clé étrangère.JOIN
子句根据user_id
列组合users
和orders
表中的行。 code>orders 表和users
表中的id
列。SELECT
子句指定要从users
和orders
combine les lignes des tablesusers
etorders
en fonction de la colonneuser_id
. La colonneid
dans la table code>orders et la tableusers
. La clauseSELECT
spécifie les colonnes à récupérer des tablesusers
etorders
.Modifié Comment puis-je le référencer dans les routes Express et les requêtes http d'axios ?
Vous pouvez utiliser la méthode sequelize.query (Sequelize est un ORM Node.js basé sur des promesses) pour exécuter des requêtes SQL brutes.
La méthodesequelize.query est utilisée pour exécuter une requête SQL brute avec la clause JOIN pour obtenir les données des tables d'utilisateurs et de commandes.