Löst einen neuen ResourceNotFoundError(id) für die nicht vorhandene ID n aus
P粉060528326
P粉060528326 2023-09-13 16:13:55
0
1
633

Ich baue ein kleines Full-Stack-System (Typescript, Express, NodeJs) auf und auf einer der Routen kann der Benutzer Filme basierend auf dem ausgewählten Kino anfordern. Die spezifischen Dienste lauten wie folgt:

async function getMoviesByTheatreId(theatreId : number) : Promise<MovieModel[]> {

    // SQL:
    const sql = 'SELECT * FROM movies where theatreId = ?;'

    // Call dal:
    const movies = await dal.execute(sql ,[theatreId]);

    // Return:
    return movies;
}

Klarstellung In der MYSQL-Datenbank gibt es zwei Tabellen: Theater und Filme. Sie teilen sich einen Fremdschlüssel, der auf die Spalte „theatreId“ in der Tabelle „Theater“ verweist. Der Fremdschlüssel ist ein Fremdschlüssel in der Filmtabelle.

Jetzt besteht die Möglichkeit, dass der Benutzer eine Theater-ID sendet, die nicht existiert. In diesem Fall möchte ich einen neuen ResourceNotFoundError auslösen. Es ist jedoch auch möglich, dass die Theater-ID zwar existiert, es aber einfach keine Filme gibt, die zu diesem Theater passen. In diesem Fall möchte ich diesen Fehler nicht auslösen. Ich möchte auch, dass die Leistung gut ist. Die Verwendung mehrerer Abfragen zur Überprüfung der Datenbank verlangsamt den gesamten Prozess.

P粉060528326
P粉060528326

Antworte allen(1)
P粉071743732

首先,在查询 Movies 表之前,检查 Theaters 表中是否存在具有所提供的 theatreId 的剧院。然后就可以查询电影了。

这里是示例代码:

async function getMoviesByTheatreId(theatreId : number) : Promise<MovieModel[]> {

    const theatreSql = 'SELECT * FROM theatres WHERE theatreId = ?';
    const theatre = await dal.execute(theatreSql, [theatreId]);

    if (theatre.length === 0) {
        // throw new ResourceNotFoundError('Theatre not found');
    }

    // SQL to retrieve movies with provided theatreId:
    const moviesSql = 'SELECT * FROM movies WHERE theatreId = ?;'

    // Call dal:
    const movies = await dal.execute(moviesSql ,[theatreId]);

    // Return:
    return movies;
}
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage