Sequelize操作Mysql时使用默认值

当使用 Sequelize 创建模型时,开发人员可以在属性定义中使用 defaultValue 来设置默认值。本文介绍使用默认值的一些常见的场景:

  1. 字符串类型 (Sequelize.STRING):

    javascript 复制代码
    const User = sequelize.define('user', {
      username: {
        type: Sequelize.STRING,
        defaultValue: 'DefaultUsername',
      },
    });
  2. 整数类型 (Sequelize.INTEGER):

    javascript 复制代码
    const Post = sequelize.define('post', {
      likes: {
        type: Sequelize.INTEGER,
        defaultValue: 0,
      },
    });
  3. 布尔类型 (Sequelize.BOOLEAN):

    javascript 复制代码
    const Task = sequelize.define('task', {
      completed: {
        type: Sequelize.BOOLEAN,
        defaultValue: false,
      },
    });
  4. 日期类型 (Sequelize.DATE):

    javascript 复制代码
    const Event = sequelize.define('event', {
      eventDate: {
        type: Sequelize.DATE,
        defaultValue: Sequelize.NOW, // 当前日期和时间
      },
    });
  5. UUID 类型 (Sequelize.UUID):

    javascript 复制代码
    const Product = sequelize.define('product', {
      productId: {
        type: Sequelize.UUID,
        defaultValue: Sequelize.UUIDV4, // 生成 UUIDv4
      },
    });
  6. 使用函数作为默认值:

    javascript 复制代码
    const Task = sequelize.define('task', {
      description: {
        type: Sequelize.STRING,
        defaultValue: () => 'Default Description',
      },
    });
  7. 特殊默认值 - 当前日期和时间 (Sequelize.NOW):

    javascript 复制代码
    const LogEntry = sequelize.define('logEntry', {
      logDate: {
        type: Sequelize.DATE,
        defaultValue: Sequelize.NOW,
      },
    });

实例

下面举一个史记中的例子说明,如何使用默认值将每条记录的主键(id)设置成随机的字符串。具体的做法为:使用 Sequelize 的 defaultValue 选项结合一个生成随机字符串的函数。

js 复制代码
const Sequelize = require('sequelize');
const { v4: uuidv4 } = require('uuid'); // 使用 uuid 库生成随机字符串

const User = sequelize.define('user', {
  id: {
    type: Sequelize.STRING,
    primaryKey: true,
    defaultValue: () => uuidv4(), // 使用 uuidv4() 生成随机字符串
  },
  username: {
    type: Sequelize.STRING,
    allowNull: false,
  },
  // 其他属性...
});

// 示例:创建新用户
User.create({
  username: 'exampleUser',
}).then((newUser) => {
  console.log('New user created with id:', newUser.id);
});
相关推荐
Decay__5 小时前
04_MySQL DBA 日常运维手册 —— 会话管理、锁与阻塞、事务监控、慢查询与日志巡检
运维·数据库·sql·mysql·架构
后台模板学习12 小时前
MongoDB 与 MySQL 在 IM 即时聊天场景中该
数据库·mysql·mongodb
雨季mo浅忆13 小时前
记录Node.js安全漏洞及其内置Brotli解码器问题
node.js·安全性测试
tommyjiatong13 小时前
资安底座连环雷:从 PHP2Shell 到 Node2Shell
node.js·php
IT大白鼠13 小时前
渗透测试实战从靶场搭建到渗透流程——第 8 篇 · 服务型靶标(上):MySQL 双版本写文件链
数据库·mysql·渗透测试
少年的范儿13 小时前
Windows 安装 MySQL 8.4 教程(ZIP 解压版):配置 my.ini、初始化数据库与启动服务
数据库·windows·mysql
神仙别闹14 小时前
基于Python+MySQL实现(Web)个人博客系统
python·mysql·php
张小姐的猫15 小时前
【MySQL】事务
android·mysql·adb
时间售卖铺15 小时前
MySQL事务ACID与隔离级别深度解析
运维·数据库·mysql·云原生
Bushlet16 小时前
Mysql建库及建表流程总结
数据库·mysql