Mock.js数据直接入库

1.2 插入数据

1.2.1 使用Mock模拟数据
import Mock from 'mockjs'
import './mock.js'

/**
 * 生成一个请求 对象
 */
function getRequestData() {
    //生成一个临时模拟数据
    return Mock.mock({
        id: '@id',
        enabled: '@boolean',
        acct_active: '@boolean',
        pwd_valid: '@boolean',
        acct_locked: '@boolean',
        username: Mock.Random.first() + Mock.Random.last() + Mock.Random.integer(100, 999),
        password: generateMockPassword(),
        nickname: '@last',
        avatar() {
            //用户头像
            return Mock.Random.image('100×100', Mock.Random.color(), '#757575', 'png', this.nickname)
        },
        phone: /^1[34578]\d{9}$/,
        email: '@email()',
        name: '@cname()',
        gender() {
            const genders = ['男', '女'];

            return Mock.Random.pick(genders);
        },
        description: Mock.Random.cparagraph(),
        modified_by: '@id',
        gmt_create: '@date(yyyy-MM-dd)',
        gmt_modified: '@date(yyyy-MM-dd)'
    })

}


//生成密码
export function generateMockPassword(length = 8) {
    const random = Mock.Random;
    const lowerCase = 'abcdefghijklmnopqrstuvwxyz';
    const upperCase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
    const numbers = '0123456789';
    const specialChars = '!@#$%^&*()_+-=[]{}|;:,.<>?';
    // 结合所有字符集
    const allChars = lowerCase + upperCase + numbers + specialChars;

    // 随机选择字符
    let password = '';
    for (let i = 0; i < length; i++) {
        const randomIndex = Math.floor(Math.random() * allChars.length);
        password += allChars[randomIndex];
    }

    return password;

}
1.2.2 插入数据库
import Pool from 'pg-pool'// 创建一个客户端实例\
import './index.js'
import {getRequestData} from "./index.js";

/**
 * 连接 参数
 * @type {{database: string, password: string, port: number, host: string, user: string}}
 */
const config = {
    user: 'postgres',
    host: 'localhost',
    database: 'postgres',
    password: '123456',
    port: 5432
};

const pool = new Pool(config);

(async function runSqlScript() {
    try {
        // 1. 连接数据库
        const client = await pool.connect();

        for (let i = 0; i < 100; i++) {

            // 2. 生成sql
            let sql = insertSql();

            // 3. 补全参数
            let param = getExeParam();


            // 4. 执行SQL
            await client.query(sql, param);

        }

    }
        // 5. 异常 处理
    catch (error) {
        console.error('Error', error);
    }
        // 6. 释放连接
    finally {
        await pool.end();
    }

})()

/**
 * 插入 sql
 * @returns {string}
 */
function insertSql() {
    return `INSERT INTO public.yhs_user3(id, enabled, acct_active, pwd_valid, acct_locked, username, password, 
            nickname, avatar, phone, email, name, gender, age, description, modified_by, gmt_create, gmt_modified)
        VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18);`
}

/**
 * 获取 执行 参数 需将对象转为 有序 数组
 * @returns {(*|string|boolean|boolean)[]}
 */
function getExeParam() {
    let obj = getRequestData()

    return [
       parseInt(obj.id),
        obj.enabled,
        obj.acct_active,
        obj.pwd_valid,
        obj.acct_locked,
        obj.username,
        obj.password,
        obj.nickname,
        obj.avatar,
        obj.phone,
        obj.email,
        obj.name,
        obj.gender,
        obj.age,
        obj.description,
        parseInt(obj.modified_by),
        obj.gmt_create,
        obj.gmt_modified
    ]
}
1.2.2 结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值