Javascript Sequalize.js:。更新不会返回受影响的行
我需要更改Javascript Sequalize.js:。更新不会返回受影响的行,javascript,node.js,sequelize.js,Javascript,Node.js,Sequelize.js,我需要更改状态并返回受影响的行: db.Member.update({ status: 0 }, { where: { id: member.id, group_id: member.group_id, } }).then((updatedMember) => {
状态
并返回受影响的行:
db.Member.update({
status: 0
}, {
where: {
id: member.id,
group_id: member.group_id,
}
}).then((updatedMember) => {
console.log("Member" + updatedMember)
// This returns 'Member 1',
// and the in the DB, the status field does change to 0
}).catch((err) => {
console.log("err " + err)
})
在。然后块中,我得到updatemember
作为1
。此外,如果我将状态
更改为表中不包含字段的其他内容,即joe:0
,updatemember
仍然返回一个1
问题:
.update
能否返回受影响的对象
如果我试图更改表中不存在的字段,是否会出错
如果您正在使用postgres,并且仅当
根据文档(),update函数返回两个对象的数组,第一个是受影响的行数,第二个是实际受影响的行数(但仅当您使用postgres时)。如果您使用的是mysql,它将无法工作
因此,我认为您可以将代码更改为以下内容,并且应该可以正常工作:
db.Member.update({
status: 0
}, {
where: {
id: member.id,
group_id: member.group_id,
}
}).then((updatedMember) => {
//updatedMember[0] will now be 1, updatedMember[1] should be the affected row
console.log("Member" + updatedMember[1])
}).catch((err) => {
console.log("err " + err)
})
如果您正在使用postgres,并且仅当
根据文档(),update函数返回两个对象的数组,第一个是受影响的行数,第二个是实际受影响的行数(但仅当您使用postgres时)。如果您使用的是mysql,它将无法工作
因此,我认为您可以将代码更改为以下内容,并且应该可以正常工作:
db.Member.update({
status: 0
}, {
where: {
id: member.id,
group_id: member.group_id,
}
}).then((updatedMember) => {
//updatedMember[0] will now be 1, updatedMember[1] should be the affected row
console.log("Member" + updatedMember[1])
}).catch((err) => {
console.log("err " + err)
})
谢谢我使用的是MySQL,文档说,而第二个元素是实际受影响的行(仅在postgres中支持options.returning true)。
我相信我必须回到。查找,然后。更新
。我确实尝试了第二个参数,但它返回了未定义的
。我不得不更新我的原始响应几次,因为我再次阅读并尝试了它。我希望Sequelize文档更清晰一点。最初我不知道括号是否意味着只有在设置选项时才支持它,这意味着它在没有选项的其他任何地方都有效,或者它是否只在设置了选项的后期有效。我尝试了自己的一个项目,发现是后者。Mysql不会这么做。对不起,谢谢。我使用的是MySQL,文档说,而第二个元素是实际受影响的行(仅在postgres中支持options.returning true)。
我相信我必须回到。查找,然后。更新
。我确实尝试了第二个参数,但它返回了未定义的
。我不得不更新我的原始响应几次,因为我再次阅读并尝试了它。我希望Sequelize文档更清晰一点。最初我不知道括号是否意味着只有在设置选项时才支持它,这意味着它在没有选项的其他任何地方都有效,或者它是否只在设置了选项的后期有效。我尝试了自己的一个项目,发现是后者。Mysql不会这么做。很抱歉