Sequlize.js:.update不返回受影响的行

时间:2017-03-31 16:32:43

标签: javascript node.js sequelize.js

我需要更改status并返回受影响的行:

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

.then区块内,我updatedMember1。另外,如果我将status更改为表格中不是字段的其他内容,即joe: 0updatedMember仍会返回1

问题:

  1. 可以.update返回受影响的对象吗?

  2. 如果我要更改表格中不存在的字段,是否应该收到错误?

1 个答案:

答案 0 :(得分:0)

如果您使用的是postgres,并且仅限于......

根据文档(http://sequelize.readthedocs.io/en/v3/api/model/#updatevalues-options-promisearrayaffectedcount-affectedrows),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)
        })