[英]Sequelize Model.increment returns [undefined, number] instead of the affected rows
[英]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.