sequelize类型
Sequelize.STRING // VARCHAR(255)
Sequelize.STRING(1234) // VARCHAR(1234)
Sequelize.STRING.BINARY // VARCHAR BINARY
Sequelize.TEXT // TEXT
Sequelize.TEXT('tiny') // TINYTEXT
Sequelize.INTEGER // INTEGER
Sequelize.BIGINT // BIGINT
Sequelize.BIGINT(11) // BIGINT(11)
Sequelize.FLOAT // FLOAT
Sequelize.FLOAT(11) // FLOAT(11)
Sequelize.FLOAT(11, 12) // FLOAT(11,12)
Sequelize.REAL // REAL 仅限于PostgreSQL.
Sequelize.REAL(11) // REAL(11) 仅限于PostgreSQL.
Sequelize.REAL(11, 12) // REAL(11,12) 仅限于PostgreSQL.
Sequelize.DOUBLE // DOUBLE
Sequelize.DOUBLE(11) // DOUBLE(11)
Sequelize.DOUBLE(11, 12) // DOUBLE(11,12)
Sequelize.DECIMAL // DECIMAL
Sequelize.DECIMAL(10, 2) // DECIMAL(10,2)
Sequelize.DATE // DATETIME 针对 mysql / sqlite, TIMESTAMP WITH TIME ZONE 针对 postgres
Sequelize.DATE(6) // DATETIME(6) 针对 mysql 5.6.4+. 小数秒支持多达6位精度
Sequelize.DATEONLY // DATE 不带时间.
Sequelize.BOOLEAN // TINYINT(1)
Sequelize.ENUM('value 1', 'value 2') // 一个允许具有 “value 1” 和 “value 2” 的 ENUM
Sequelize.ARRAY(Sequelize.TEXT) // 定义一个数组。 仅限于 PostgreSQL。
Sequelize.ARRAY(Sequelize.ENUM) // 定义一个 ENUM 数组. 仅限于 PostgreSQL。
Sequelize.JSON // JSON 列. 仅限于 PostgreSQL, SQLite and MySQL.
Sequelize.UUID // PostgreSQL 和 SQLite 的 UUID 数据类型, CHAR(36) BINARY 针对于 MySQL (使用默认值: Sequelize.UUIDV1 或 Sequelize.UUIDV4 来让 sequelize 自动生成 ID)
Sequelize.GEOMETRY // 空间列. 仅限于 PostgreSQL (具有 PostGIS) 或 MySQL.
Sequelize.GEOMETRY('POINT') // 具有几何类型的空间列. 仅限于 PostgreSQL (具有 PostGIS) 或 MySQL.
Sequelize.GEOMETRY('POINT', 4326) // 具有几何类型和SRID的空间列. 仅限于 PostgreSQL (具有 PostGIS) 或 MySQL.
使用
基于 Egg.js 框架的 Node.js 服务构建之用户管理设计如何为团队定制 Egg 目录挂载规范?使用ts版的eggjs来搭建api 当 Egg 遇到 TypeScript,收获茶叶蛋一枚egg typescript模板下使用 egg-sequelize 下就报错。添加到 typings/index.d.ts 就不报错了 示例:
import uuidv1 from "uuid/v1";
import { Application } from "egg";
function generateUUID() {
return uuidv1().replace(/-/g, "");
}
function defineModel(app: Application, name, attributes) {
const { UUID } = app.Sequelize;
let attrs: any = {};
for (let key in attributes) {
let value = attributes[key];
if (typeof value === "object" && value["type"]) {
value.allowNull = value.allowNull && true;
attrs[key] = value;
} else {
attrs[key] = {
type: value,
allowNull: true,
};
}
}
attrs.id = {
type: UUID,
primaryKey: true,
defaultValue: () => {
return generateUUID();
},
};
return app.model.define(name, attrs, {
createdAt: "createdAt",
updatedAt: "updatedAt",
version: true,
freezeTableName: true,
});
}
export { defineModel };
app.utils
内置的 Helper 太简单的,只支持单文件。实际上 Helper 的定位是给模板渲染用的,如果大家有一些公共方法,可以自定义挂载到 app.utils 上。
exports.customLoader = {
utils: {
directory: 'app/utils',
inject: 'app',
},
};
--------------------分割线
config.customLoader = {
utils: {
directory: "app/utils",
inject: "app",
},
};
定义
module.exports = class Formatter {
constructor(app) {
this.app = app;
this.config = app.config;
this.logger = app.logger;
}
random(max) {
return Math.floor(Math.random() * Math.floor(max));
}
};
当然也可以简化为
module.exports = app => {
return {
random() {},
};
};
配置ts自动提示- 生成声明,由于 Egg 是动态挂载的,因此 TS 和智能提示,需要通过我们的 ets 来自动生成映射。需要简单配置下 package.json,重启下,即可自动生成对应的 typings。
{
"name: "egg-showcase",
"egg": {
"declarations": true,
"tsHelper": {
"watchDirs": {
"enum": {
"enabled": true,
"directory": "app/enum",
"declareTo": "Application.enum"
},
"utils": {
"enabled": true,
"directory": "app/utils",
"declareTo": "Application.utils"
},
"rpc": {
"enabled": true,
"directory": "app/rpc",
"declareTo": "Context.rpc"
}
}
}
},
}
享受智能提示吧jwt 用户登录认证 eggjs入门系列——使用egg-jwt egg 参数校验
转载请注明原文地址:https://ipadbbs.8miu.com/read-2798.html