生成器

警告

目前,在支持它的生成器中同时指定 arraySizeisUnique,将会生成唯一值(而不是唯一数组),随后这些值会被打包成数组。

---

default

每次调用生成器时都会生成相同的给定值。

paramdefaulttype
defaultValueany
arraySizenumber
import { seed } from "drizzle-seed";

await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  posts: {
    columns: {
      content: funcs.default({
        // 你想生成的值
        defaultValue: "post content",

        // 每个一维数组中的元素数量。 
        // (如果指定,将生成数组。)
        arraySize: 3
      }),
    },
  },
}));

valuesFromArray

根据给定数组生成值

paramdefaulttype
valuesany[] | { weight: number; values: any[] }[]
isUniquedatabase column uniquenessboolean
arraySizenumber
import { seed } from "drizzle-seed";

await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  posts: {
    columns: {
      title: funcs.valuesFromArray({
        // 你希望生成的值数组(也可以是带权重的值数组)
        values: ["Title1", "Title2", "Title3", "Title4", "Title5"],

        // 控制生成的值是否唯一的属性
        isUnique: true,
        
        // 每个一维数组中的元素数量。
        // (如果指定,将生成数组。)
        arraySize: 3
      }),
    },
  },
}));

intPrimaryKey

生成从 1 开始的连续整数。

paramdefaulttype
import { seed } from "drizzle-seed";

await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  posts: {
    columns: {
      id: funcs.intPrimaryKey(),
    },
  },
}));

number

在给定范围内生成带有浮点数的数字

paramdefaulttype
isUnique数据库列唯一性boolean
precision100number
maxValue `precision * 1000` if isUnique equals false `precision * count` if isUnique equals truenumber
minValue-maxValuenumber
arraySizenumber
import { seed } from "drizzle-seed";

await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  products: {
    columns: {
      unitPrice: funcs.number({
        // 范围的下边界。
        minValue: 10,

        // 范围的上边界。
        maxValue: 120,
        
        // 生成数字的精度:
        // precision 等于 10 表示数值精确到十分位(1.2, 34.6);
        // precision 等于 100 表示数值精确到百分位(1.23, 34.67)。
        precision: 100,

        // 控制生成值是否唯一的属性。
        isUnique: false,

        // 每个一维数组中的元素数量。 
        // (如果指定,则会生成数组。)
        arraySize: 3
      }),
    },
  },
}));

int

在给定范围内生成整数

paramdefaulttype
isUniquedatabase column uniquenessboolean
maxValue`如果 isUnique 为 false,则为 1000` `如果 isUnique 为 true,则为 count * 10`number | bigint
minValue-maxValuenumber | bigint
arraySizenumber
import { seed } from "drizzle-seed";

await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  products: {
    columns: {
      unitsInStock: funcs.int({
        // 范围的下边界。
        minValue: 0,

        // 范围的下边界。
        maxValue: 100,

        // 控制生成值是否唯一的属性。
        isUnique: false,

        // 每个一维数组中的元素数量。 
        // (如果指定,将生成数组。)
        arraySize: 3
      }),
    },
  },
}));

boolean

生成布尔值(true 或 false)

paramdefaulttype
arraySizenumber
import { seed } from "drizzle-seed";

await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  users: {
    columns: {
      isAvailable: funcs.boolean({
        // 每个一维数组中的元素数量。 
        // (如果指定,将生成数组。)
        arraySize: 3
      }),
    },
  },
}));

date

在给定范围内生成一个日期

paramdefaulttype
minDate `'2024-05-08' - 4 years` - if maxDate is not set `maxDate - 8 years` - if maxDate is setstring | Date
maxDate `'2024-05-08' + 4 years` - if minDate is not set `minDate + 8 years` - if minDate is setstring | Date
arraySizenumber
IMPORTANT

如果只提供其中一个参数(minDatemaxDate),则未指定的参数将通过对已指定的参数加上或减去 8 年来计算

import { seed } from "drizzle-seed";

await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  users: {
    columns: {
      birthDate: funcs.date({
        // 范围的下边界。
        minDate: "1990-01-01",

        // 上边界。
        maxDate: "2010-12-31",

        // 每个一维数组中的元素数量。 
        // (如果指定,将生成数组。)
        arraySize: 3
      }),
    },
  },
}));

time

生成 24 小时格式的时间

参数默认值类型
min'00:00:00.000Z'string | Date
max'23:59:59.999Z'string | Date
arraySizenumber
import { seed } from "drizzle-seed";

await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  users: {
    columns: {
      birthTime: funcs.time({
        // 范围的下边界。
        min: "11:12:13.141",

        // 范围的上边界。
        max: "15:16:17.181",

        // 每个一维数组中的元素数量。 
        // (如果指定,将生成数组。)
        arraySize: 3
      }),
    },
  },
}));

timestamp

生成时间戳

paramdefaulttype
min`'2024-05-08' - 2 years` - 如果未设置 max `max - 4 years` - 如果已设置 maxstring | Date
max`'2024-05-08' + 2 years` - 如果未设置 min `min + 4 years` - 如果已设置 minstring | Date
arraySizenumber
import { seed } from "drizzle-seed";

await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  orders: {
    columns: {
      shippedDate: funcs.timestamp({
        // 范围下边界。
        min: "2025-03-07T11:12:13.141",

        // 范围上边界。
        max: "2025-03-08T15:16:17.181",

        // 每个一维数组中的元素数量。 
        // (如果指定,将生成数组。)
        arraySize: 3
      }),
    },
  },
}));

datetime

生成 datetime 对象

paramdefaulttype
min `'2024-05-08' - 2 years` - 如果未设置 max `max - 4 years` - 如果已设置 maxstring | Date
max `'2024-05-08' + 2 years` - 如果未设置 min `min + 4 years` - 如果已设置 minstring | Date
arraySizenumber
import { seed } from "drizzle-seed";

await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  orders: {
    columns: {
      shippedDate: funcs.datetime({
        // 范围的下边界。
        min: "2025-03-07 13:12:13Z",
        
        // 范围的上边界。
        max: "2025-03-09 15:12:13Z",

        // 每个一维数组中的元素数量。 
        //(如果指定,将生成数组。)
        arraySize: 3
      }),
    },
  },
}));

year

生成 YYYY 格式的年份

paramdefaulttype
arraySizenumber
import { seed } from "drizzle-seed";

await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  users: {
    columns: {
      birthYear: funcs.year({
        // 每个一维数组中的元素数量。
        //(如果指定,将生成数组。)
        arraySize: 3
      }),
    },
  },
}));

json

生成具有固定结构的 JSON 对象

{ email, name, isGraduated, hasJob, salary, startedWorking, visitedCountries}

// 或

{ email, name, isGraduated, hasJob, visitedCountries }

JSON 结构将随机选择

paramdefaulttype
arraySizenumber
import { seed } from "drizzle-seed";

await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  users: {
    columns: {
      metadata: funcs.json({
        // 每个一维数组中的元素数量。
        // (如果指定,将生成数组。)
        arraySize: 3
      }),
    },
  },
}));

interval

生成时间间隔。

生成值示例:1 year 12 days 5 minutes

参数默认值类型
isUniquedatabase column uniquenessboolean
arraySizenumber
import { seed } from "drizzle-seed";

await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  users: {
    columns: {
      timeSpentOnWebsite: funcs.interval({
        // `isUnique` - 控制生成的值是否唯一的属性
        isUnique: true,

        // 每个一维数组中的元素数量。 
        // (如果指定,将生成数组。)
        arraySize: 3
      }),
    },
  },
}));

string

生成随机字符串

paramdefaulttype
isUnique数据库列唯一性boolean
arraySizenumber
import { seed } from "drizzle-seed";

await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  users: {
    columns: {
      hashedPassword: funcs.string({
        // `isUnique` - 控制生成的值是否唯一的属性
        isUnique: false,
        
        // 每个一维数组中的元素数量。 
        // (如果指定,将生成数组。)
        arraySize: 3
      }),
    },
  },
}));

uuid

生成 v4 UUID 字符串

paramdefaulttype
arraySizenumber
import { seed } from "drizzle-seed";
await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  products: {
    columns: {
      id: funcs.uuid({
        // 每个一维数组中的元素数量。
        // (如果指定,将生成数组。)
        arraySize: 3
      }),
    },
  },
}));

firstName

生成一个人的名字

paramdefaulttype
isUniquedatabase column uniquenessboolean
arraySizenumber
import { seed } from "drizzle-seed";

await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  users: {
    columns: {
      firstName: funcs.firstName({
        // `isUnique` - 控制生成的值是否唯一的属性
        isUnique: true,

        // 每个一维数组中的元素数量。 
        // (如果指定,将生成数组。)
        arraySize: 3
      }),
    },
  },
}));

lastName

生成一个人的姓氏

paramdefaulttype
isUniquedatabase column uniquenessboolean
arraySizenumber
import { seed } from "drizzle-seed";

await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  users: {
    columns: {
      lastName: funcs.lastName({
        // `isUnique` - 控制生成的值是否唯一的属性
        isUnique: false,
        
        // 每个一维数组中的元素数量。 
        // (如果指定,将生成数组。)
        arraySize: 3
      }),
    },
  },
}));

fullName

生成某人的全名

paramdefaulttype
isUnique数据库列唯一性boolean
arraySizenumber
import { seed } from "drizzle-seed";

await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  users: {
    columns: {
      fullName: funcs.fullName({
        // `isUnique` - 控制生成值是否唯一的属性
        isUnique: true,

        // 每个一维数组中的元素数量。 
        // (如果指定,将生成数组。)
        arraySize: 3
      }),
    },
  },
}));

email

生成唯一的电子邮件地址

paramdefaulttype
arraySizenumber
import { seed } from "drizzle-seed";

await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  users: {
    columns: {
      email: funcs.email({
        // 每个一维数组中的元素数量。
        // (如果指定,将生成数组。)
        arraySize: 3
      }),
    },
  },
}));

phoneNumber

生成唯一的电话号码

paramdefaulttype
templatestring
prefixes用于前缀的数据集string[]
generatedDigitsNumbers7 - 如果定义了 prefixesnumber | number[]
arraySizenumber
import { seed } from "drizzle-seed";

// 使用 template 属性生成电话号码
await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  users: {
    columns: {
      phoneNumber: funcs.phoneNumber({ 
        // `template` - 电话号码模板,其中所有 `#` 符号都将被生成的数字替换。
        template: "+(380) ###-####",

        // 每个一维数组中的元素数量。 
        // (如果指定,则会生成数组。)
        arraySize: 3
      }),
    },
  },
}));
import { seed } from "drizzle-seed";

// 使用 prefixes 和 generatedDigitsNumbers 属性生成电话号码
await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  users: {
    columns: {
      phoneNumber: funcs.phoneNumber({
        // `prefixes` - 你想作为电话号码前缀的任意字符串数组。(与 `template` 属性不兼容)
        prefixes: ["+380 99", "+380 67"],

        // `generatedDigitsNumbers` - 将添加到前缀末尾的数字位数。(与 `template` 属性不兼容)
        generatedDigitsNumbers: 7,

        // 每个一维数组中的元素数量。 
        // (如果指定,则会生成数组。)
        arraySize: 3
      }),
    },
  },
}));
import { seed } from "drizzle-seed";

// 使用 prefixes 和 generatedDigitsNumbers 属性生成电话号码,但对不同的 prefixes 使用不同的 generatedDigitsNumbers
await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  users: {
    columns: {
      phoneNumber: funcs.phoneNumber({
        // `prefixes` - 你想作为电话号码前缀的任意字符串数组。(与 `template` 属性不兼容)
        prefixes: ["+380 99", "+380 67", "+1"],

        // `generatedDigitsNumbers` - 将添加到前缀末尾的数字位数。(与 `template` 属性不兼容)
        generatedDigitsNumbers: [7, 7, 10],

        // 每个一维数组中的元素数量。 
        // (如果指定,则会生成数组。)
        arraySize: 3
      }),
    },
  },
}));

country

生成国家名称

paramdefaulttype
isUnique数据库列唯一性boolean
arraySizenumber
import { seed } from "drizzle-seed";

await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  users: {
    columns: {
      country: funcs.country({
        // `isUnique` - 控制生成的值是否唯一的属性
        isUnique: false,
        
        // 每个一维数组中的元素数量。
        //(如果指定,将生成数组。)
        arraySize: 3
      }),
    },
  },
}));

city

生成城市名称

paramdefaulttype
isUniquedatabase column uniquenessboolean
arraySizenumber
import { seed } from "drizzle-seed";

await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  users: {
    columns: {
      city: funcs.city({
        // `isUnique` - 控制生成的值是否唯一的属性
        isUnique: false,

        // 每个一维数组中的元素数量。 
        //(如果指定,将生成数组。)
        arraySize: 3
      }),
    },
  },
}));

streetAddress

生成街道地址

paramdefaulttype
isUniquedatabase column uniquenessboolean
arraySizenumber
import { seed } from "drizzle-seed";

await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  users: {
    columns: {
      streetAddress: funcs.streetAddress({
        // `isUnique` - 控制生成值是否唯一的属性
        isUnique: false,
        
        // 每个一维数组中的元素数量。 
        // (如果指定,将生成数组。)
        arraySize: 3 
      }),
    },
  },
}));

jobTitle

生成职位名称

paramdefaulttype
arraySizenumber
import { seed } from "drizzle-seed";

await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  users: {
    columns: {
      jobTitle: funcs.jobTitle({
        // 每个一维数组中的元素数量。 
        //(如果指定,将生成数组。)
        arraySize: 3
      }),
    },
  },
}));

postcode

生成邮政编码

paramdefaulttype
isUnique数据库列唯一性boolean
arraySizenumber
import { seed } from "drizzle-seed";

await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  users: {
    columns: {
      postcode: funcs.postcode({
        // `isUnique` - 控制生成的值是否唯一的属性
        isUnique: true,

        // 每个一维数组中的元素数量。 
        //(如果指定,将生成数组。)
        arraySize: 3
      }),
    },
  },
}));

state

生成美国各州

paramdefaulttype
arraySizenumber
import { seed } from "drizzle-seed";

await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  users: {
    columns: {
      state: funcs.state({
        // 每个一维数组中的元素数量。 
        // (如果指定,将生成数组。)
        arraySize: 3
      }),
    },
  },
}));

companyName

生成随机公司名称

paramdefaulttype
isUnique数据库列唯一性boolean
arraySizenumber
import { seed } from "drizzle-seed";

await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  users: {
    columns: {
      company: funcs.companyName({ 
        // `isUnique` - 控制生成的值是否唯一的属性
        isUnique: true,

        // 每个一维数组中的元素数量。 
        // (如果指定,将生成数组。)
        arraySize: 3
      }),
    },
  },
}));

loremIpsum

生成 lorem ipsum 文本句子。

paramdefaulttype
sentencesCount1number
arraySizenumber
import { seed } from "drizzle-seed";

await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  posts: {
    columns: {
      content: funcs.loremIpsum({
        // `sentencesCount` - 你希望作为一个生成值(字符串)生成的句子数量。
        sentencesCount: 2,

        // 每个一维数组中的元素数量。 
        // (如果指定,将生成数组。)
        arraySize: 3
      }),
    },
  },
}));

point

在指定范围内为 x 和 y 坐标生成二维点。

paramdefaulttype
isUnique数据库列唯一性boolean
maxXValue `如果 isUnique 为 false,则为 `10 * 1000 `如果 isUnique 为 true,则为 `10 * countnumber
minXValue-maxXValuenumber
maxYValue `如果 isUnique 为 false,则为 `10 * 1000 `如果 isUnique 为 true,则为 `10 * countnumber
minYValue-maxYValuenumber
arraySizenumber
import { seed } from "drizzle-seed";

await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  triangles: {
    columns: {
      pointCoords: funcs.point({
        // `isUnique` - 控制生成的值是否唯一的属性。
        isUnique: true,

        // `minXValue` - x 坐标范围的下界。
        minXValue: -5,

        // `maxXValue` - x 坐标范围的上界。
        maxXValue: 20,

        // `minYValue` - y 坐标范围的下界。
        minYValue: 0,

        // `maxYValue` - y 坐标范围的上界。
        maxYValue: 30,

        // 每个一维数组中的元素数量。 
        // (如果指定,将生成数组。)
        arraySize: 3
      }),
    },
  },
}));

line

在指定范围内生成线的 a、b 和 c 参数的二维直线。

line equation: a*x + b*y + c = 0
paramdefaulttype
isUnique数据库列唯一性boolean
maxAValue `10 * 1000` if isUnique equals false `10 * count` if isUnique equals truenumber
minAValue-maxAValuenumber
maxBValue `10 * 1000` if isUnique equals false `10 * count` if isUnique equals truenumber
minBValue-maxBValuenumber
maxCValue `10 * 1000` if isUnique equals false `10 * count` if isUnique equals truenumber
minCValue-maxCValuenumber
arraySizenumber
import { seed } from "drizzle-seed";

await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  lines: {
    columns: {
      lineParams: funcs.point({
        // `isUnique` - 控制生成的值是否唯一的属性。
        isUnique: true,

        // `minAValue` - 参数 a 的下界。
        minAValue: -5,

        // `maxAValue` - x 参数的上界。
        maxAValue: 20,

        // `minBValue` - y 参数的下界。
        minBValue: 0,

        // `maxBValue` - y 参数的上界。
        maxBValue: 30,

        // `minCValue` - y 参数的下界。
        minCValue: 0,

        // `maxCValue` - y 参数的上界。
        maxCValue: 10,

        // 每个一维数组中的元素数量。 
        // (如果指定,将生成数组。)
        arraySize: 3
      }),
    },
  },
}));

bitString

根据指定参数生成位字符串。

paramdefaulttype
isUnique数据库列唯一性boolean
dimensions数据库列位长度number
arraySizenumber
import { seed } from "drizzle-seed";

await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  bitStringTable: {
    columns: {
      bit: funcs.bitString({
        // 每个位字符串的期望长度(例如,`dimensions = 3` 生成像 `'010'` 这样的值)。
        dimensions: 12,

        // 控制生成的值是否唯一的属性;
        isUnique: true,

        // 每个一维数组中的元素数量(如果指定,将生成数组);
        arraySize: 3,
      }),
    },
  },
}));

inet

根据指定参数生成 IP 地址。

paramdefaulttype
isUnique数据库列唯一性boolean
arraySizenumber
ipAddress'ipv4''ipv4' | 'ipv6'
includeCidrtrueboolean
import { seed } from "drizzle-seed";

await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  inetTable: {
    columns: {
      inet: funcs.inet({
        // 控制生成的值是否唯一的属性;
        isUnique: true,

        // 每个一维数组中的元素数量(如果指定,将生成数组);
        arraySize: 3,

        // 要生成的 IP 地址类型——"ipv4" 或 "ipv6";
        ipAddress: "ipv4",

        // 确定生成的 IP 是否包含 CIDR 后缀。
        includeCidr: true,
      }),
    },
  },
}));

vector

根据提供的参数生成向量。

paramdefaulttype
isUnique数据库列唯一性boolean
arraySizenumber
decimalPlaces2number
dimensions数据库列的维度number
minValue-1000number
maxValue1000number
import { seed } from "drizzle-seed";

await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  vectorTable: {
    columns: {
      vector: funcs.vector({
        // 控制生成的值是否唯一的属性;
        isUnique: true,

        // 每个一维数组中的元素数量(如果指定,将生成数组);
        arraySize: 3,

        // 每个向量元素的小数位数(例如,`decimalPlaces = 3` 会生成像 `1.123` 这样的值);
        decimalPlaces: 5,

        // 每个生成向量中的元素数量(例如,`dimensions = 3` 会生成像 `[1,2,3]` 这样的值);
        dimensions: 12,

        // 每个向量元素允许的最小值;
        minValue: -100,

        // 每个向量元素允许的最大值。
        maxValue: 100,
      }),
    },
  },
}));