cari

Rumah  >  Soal Jawab  >  teks badan

Membuang ResourceNotFoundError(id) baharu untuk id n yang tidak wujud

Saya sedang membina sistem tindanan penuh kecil (skrip taip, ekspres, NodeJs) dan dalam salah satu laluan pengguna boleh meminta filem berdasarkan teater yang dipilih, perkhidmatan khusus adalah seperti berikut:

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;
}

Penjelasan Terdapat dua jadual dalam pangkalan data MYSQL - Teater dan Filem. Mereka berkongsi kunci asing yang merujuk lajur "theatreId" dalam jadual Teater. Kunci asing ialah kunci asing dalam jadual filem.

Kini, terdapat kemungkinan pengguna menghantar beberapa theatreId yang tidak wujud, dalam hal ini saya ingin membuang ResourceNotFoundError baharu. Walau bagaimanapun, kemungkinan theatreId juga wujud, tetapi tiada filem yang sepadan dengan teater tersebut. Dalam kes ini saya tidak mahu membuang kesilapan itu. Saya juga mahu ia menjadi baik dari segi prestasi, menggunakan berbilang pertanyaan untuk menyemak pangkalan data akan melambatkan keseluruhan proses.

P粉060528326P粉060528326444 hari yang lalu643

membalas semua(1)saya akan balas

  • P粉071743732

    P粉0717437322023-09-14 15:36:55

    Mula-mula, sebelum menanyakan jadual Filem, semak sama ada teater dengan theatreId yang disediakan wujud dalam jadual Teater. Kemudian anda boleh menanyakan filem itu.

    Berikut ialah kod contoh:

    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;
    }
    

    balas
    0
  • Batalbalas