繁体   English   中英

使用 Sequelize Model 和 NodeJS 删除后如何更改默认值?

[英]How to change default value after delete with Sequelize Model and NodeJS?

我创建了一个 controller 来删除我的 Sequelize Model 的记录,但现在我遇到了一个麻烦,我不知道如何在删除记录后必须更改defaultValue 让我在下面演示我的代码。

我有一个用户 Model:

module.exports = (sequelize, Sequelize) => {
  const User = sequelize.define("user", {
    user_id: {
      type: Sequelize.STRING,
      autoIncrement: true,
      primaryKey: true,
    },
    username: {
      type: Sequelize.STRING,
    },
    password: {
      type: Sequelize.STRING,
    },
    full_name: {
      type: Sequelize.STRING,
    },
    email: {
      type: Sequelize.STRING,
    },
    role_id: {
      type: Sequelize.STRING,
    },
    is_active: {
      type: Sequelize.BOOLEAN,
      defaultValue: true
    },
    created_date: {
      type: Sequelize.DATE,
    },
    created_by: {
      type: Sequelize.STRING,
    },
    updated_date: {
      type: Sequelize.DATE,
    },
    updated_by: {
      type: Sequelize.STRING,
    },
  });

  return User;
};

我已经创建了一个删除 controller:

// delete user
export async function deleteUser(req, res) {
  try {
    const user = await User.findByIdAndDelete(req.params.user_id);
    if (!user) {
      return res.status(404).send();
    }
    res.send(user);
  } catch (error) {
    return res.status(500).json({
      success: false,
      message: "Server error. Please try again.",
      error: error.message,
    });
  }
}

现在我想知道如何在删除后将is_activedefaultValue值更改为 0。

据我了解,您似乎只想更改 is_active 。 因此,我建议您使用 findByIdAndUpdate 查询并将 is_active 设置为 0。

代码示例

let doc = await User.findByIdAndUpdate(id,{$set: {is_active: 0}});
if(!doc) {
throw new Error('Deletion failed');
}
doc = await User.findById(id); // it will retrieve the updated result;
res.json(doc.toJSON());

注意:此过程不会从数据库中删除用户。 因此,在验证/验证用户时,还要检查 is_active 字段。

总是自己做。 海兹

// delete user
export async function deleteUser(req, res) {
  const id = req.params.user_id;
  try {
    const user_id = await User.findById(id);
    const is_active = await User.update({ is_active: 0 });
    res.status(200).json({
      user_id,
      is_active,
      success: true,
      message: "User is deleted succesfully",
      data: null,
    });
  } catch (error) {
    console.log(error);
    res.status(500).json({
      success: false,
      message: "Server error. Please try again.",
      error: error.message,
      data: null,
    });
  }
}

暂无
暂无

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

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