首页 > 解决方案 > 更新到数据库后返回更新的对象而不是计数

问题描述

我正在更新食品卡车数据库中的条目。这是我的模型在此特定更新中的样子:

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

我想以对象形式返回实际更新的条目。正如您在上面看到的,我试图通过在模型中使用另一个名为findTruckById. 这findTruckById看起来像:

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

这不起作用,因为从该editTruck方法返回的响应只是数据库中已更新条目的计数,即 1,而不是条目的 id 或 id 数组。因此,它总是只返回 1,并且在里面运行 1findTruckById会返回一个对象,该对象相当于卡车数据库中 id 为 1 的条目,这绝对不是我们想要的。我怎么解决这个问题?

标签: javascriptsqlnode.jsdatabasebackend

解决方案


您已经有了 ID,不需要“更新”来返回它。

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

推荐阅读