【问题标题】:How to adding default value to Sequelize model with NodeJS?如何使用 NodeJS 为 Sequelize 模型添加默认值?
【发布时间】:2022-09-25 19:32:59
【问题描述】:

我已经创建了一个控制器来向数据库中添加新值,但现在我不知道如何将默认值设置为 Sequelize。让我在下面展示我的代码。

模型用户:

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,
    },
    created_date: {
      type: Sequelize.DATE,
    },
    created_by: {
      type: Sequelize.STRING,
    },
    updated_date: {
      type: Sequelize.DATE,
    },
    updated_by: {
      type: Sequelize.STRING,
    },
  });

  return User;
};

模特角色:

module.exports = (sequelize, Sequelize) => {
  const Role = sequelize.define(\"role\", {
    role_id: {
      type: Sequelize.STRING,
      autoIncrement: true,
      primaryKey: true,
    },
    role_name: {
      type: Sequelize.STRING,
    },
    is_active: {
      type: Sequelize.BOOLEAN,
    },
    created_date: {
      type: Sequelize.DATE,
    },
    created_by: {
      type: Sequelize.STRING,
    },
    updated_date: {
      type: Sequelize.DATE,
    },
    updated_by: {
      type: Sequelize.STRING,
    },
  });

  return Role;
};

控制器用户:

const db = require(\"../models\");
const User = db.users;

exports.create = (req, res) => {
    // Validate request
    if (!req.body.username) {
      res.status(400).send({
        message: \"Content can not be empty!\"
      });
      return;
    }
  
    // Create a Tutorial
    const user = {
        username: req.body.username,
        password: req.body.password,
        full_name: req.body.full_name,
        email: req.body.email,
        role_id: req.body.role_id,
        is_active: req.body.is_active,
        created_date: req.body.created_date,
        created_by: req.body.created_by,
        updated_date: req.body.updated_date,
        updated_by: req.body.updated_by,
    };
  
    // Save Tutorial in the database
    User.create(user)
      .then(data => {
        res.send(data);
      })
      .catch(err => {
        res.status(500).send({
          message:
            err.message || \"Some error occurred while creating new User.\"
        });
      });
  };

如何添加每个值的默认值一定是角色是 USER 和 is_active = 1

    标签: javascript node.js postgresql api sequelize.js


    【解决方案1】:

    您可以在迁移文件中的数据库级别定义默认值。 或者,您也可以在模型定义本身的 sequelize 级别进行定义。

    module.exports = (sequelize, Sequelize) => {
      const User = sequelize.define("user", {
        user_id: {
          type: Sequelize.STRING,
          autoIncrement: true,
          primaryKey: true,
        },
    role_name: {
          type: Sequelize.STRING,
          defaultValue: 'USER'
        },
        is_active: {
          type: Sequelize.BOOLEAN,
          defaultValue: 1
        }
        });
    
      return User;
    };
    

    https://sequelize.org/docs/v6/core-concepts/model-basics/#default-values

    【讨论】:

    • 就像我不需要制作控制器一样,这很容易。感谢您的帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-09-25
    • 2021-06-05
    • 1970-01-01
    • 2019-09-07
    • 2018-10-21
    • 2017-10-19
    • 1970-01-01
    相关资源
    最近更新 更多