Saya membuat pembaruan untuk entri di database truk makanan. Seperti inilah model saya untuk pembaruan partikulat ini:

function editTruck(changes, id) {
    return db('trucks')
        .where({ id })
        .update(changes)
        .then(id => {
            return findTruckById(id);
        })
}

Saya ingin mengembalikan entri aktual yang diperbarui dalam bentuk objek. Seperti yang Anda lihat di atas, saya mencoba menyelesaikan ini dengan menggambar metode lain dalam model yang disebut findTruckById. Seperti inilah findTruckById:

function findTruckById(id) {
    return db('trucks')
    .select('id', 'name', 'image', 'operator_id', 'cuisine_type', 'physical_address')
    .where({ id })
    .first()
}

Ini tidak berfungsi karena respons yang dikembalikan dari metode editTruck hanyalah hitungan entri dalam database yang diperbarui, yaitu 1, berlawanan dengan id atau larik id untuk entri. Oleh karena itu, selalu hanya mengembalikan 1 dan menjalankan 1 di dalam findTruckById mengembalikan objek yang setara dengan entri dalam database truk dengan id 1, yang jelas bukan yang kita inginkan. Bagaimana saya bisa memecahkan masalah ini?

0
Jevon Cochran 7 Maret 2020, 06:05

1 menjawab

Jawaban Terbaik

Anda sudah memiliki ID, Anda tidak perlu "update" untuk mengembalikannya.

function editTruck(changes, id) {
return db('trucks')
    .where({ id })
    .update(changes)
    .then(() => { // you already have the id, just use the `id` that is already in the scope
        return findTruckById(id);
    })
}
1
Jorge Armando Palm 7 Maret 2020, 04:41