首页 > 解决方案 > 受影响的行返回未定义

问题描述

所以,我已经尝试解决这个问题 2 个小时了,当我尝试从 mysql 表中删除一行时,我总是收到错误“无法读取未定义的属性影响行”。我为另一个应用程序使用了完全相同的代码,并且运行良好。但在这里我就是不知道发生了什么。

这是连接到数据库的代码以及从表 dbService.js 中删除行的实际函数:

`

class DbService {

    static getDbServiceInstance() {
        return instance ? instance : new DbService()
    }

    
    async deleteTodoItem(id) {
        try {
            id = parseInt(id, 10); 
            const response = await new Promise((resolve, reject) => {
                const query = "DELETE FROM todoApp WHERE id = ?";
    
                connenction.query(query, [id] , (err, result) => {
                    if (err){
                        reject(new Error(err.message))
                    } 
                    resolve(result.affectedRows)
                })
            })
    
            console.log(response)
            return response === 1 ? true : false
        } catch (error) {
            console.log(error)
            return false
        }
    }


}

`

以下是来自后端 app.js 的代码:

`

app.delete('/delete/:id', (request, response) => {
  const { id } = request.params;
  const db = dbService.getDbServiceInstance()

  const result = db.deleteTodoItem(id)
  
  result
  .then(data => response.json({success : data}))
  .catch(err => console.log(err))
})

`

这是来自前端的代码,它从 html 元素 index.js 中删除项目:

`

document.getElementById('todoItems').addEventListener('click', function(event) {

    if(event.target.className === 'deleteBtn') {
        deleteItemById(event.target.dataset.id)
    }
})

function deleteItemById(id) {
    fetch('http://localhost:3002/delete/' + id, {
        method: 'DELETE'
    })
    .then(response => response.json())
    .then(data => {
        if (data.success) {
            location.reload();
        }
    });
}

`

标签: javascripthtmlmysqlnode.jsexpress

解决方案


我解决了它,这是 html 元素中的一个属性的问题,这使得我试图获得未定义的 id。


推荐阅读