Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Sequalize.js:。更新不会返回受影响的行_Javascript_Node.js_Sequelize.js - Fatal编程技术网

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不会这么做。很抱歉