繁体   English   中英

受影响的行返回未定义

[英]Affected Rows returning undefined

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

这是连接到数据库的代码和实际的 function 从表 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();
        }
    });
}

`

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

我认为你应该尝试这个标准:

没用

第一种可能性:

resolve(parseInt(parseIntresult.affectedRows,10))

第二种可能性:不要做严格相等

response == 1 ? true : false

另一个解决方案:

试试这个:

resolve(result['affectedRows'])

我希望这会对你有所帮助,评论之后发生的事情。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM