【sequelizejs实战】sequelizejs -DataTypes 添加OBJECTID类型

sequelizejs -DataTypes 添加OBJECTID类型

概述

在数据库的主键的编码上,sequelizejs支持自增和uuid等方式,但这些主键的定义都各有优缺点,在使用过MongoDB之后,十分欣赏mongoDB的ObjectId生成的方式,以此作为主键对于分布式的应用更加友好,因此将sequelizejs 拓展,进行支持objectID。

引入BSON

在项目中引入BSON,建议在sequelizejs目录中进行安装。

npm install BSON -save

BSON 安装后会即时编译。因此需要提前安装编译所需的环境。

拓展DataTypes

在data-type.js中添加代码:

/**
 * A column storing a OBJECTID univeral identifier.
 * @property OBJECTID
 */
var OBJECTID = function() {
  if (!(this instanceof OBJECTID)) return new OBJECTID();
  ABSTRACT.apply(this, arguments);
};
util.inherits(OBJECTID, ABSTRACT);

OBJECTID.prototype.key = OBJECTID.key = ‘OBJECTID‘;

设置模块接口:

module.exports = {
   ....
  OBJECTID:OBJECTID,
  ....
};

设置数据类型默认值
在utils.js中引入Bson模块:

  var Bson=require(‘bson‘);

在utils.js中修改toDefaultValue方法:

  toDefaultValue: function(value) {
    if (lodash.isFunction(value)) {
      return value();
    } else if (value instanceof DataTypes.UUIDV1) {
      return uuid.v1();
    } else if (value instanceof DataTypes.UUIDV4) {
      return uuid.v4();
    } else if (value instanceof DataTypes.NOW) {
      return Utils.now();
    } else if (value instanceof DataTypes.OBJECTID) {
      return Bson.ObjectID().toString();
    } else {
      return value;
    }
  },

使用

定义的数据模型的时候,指定typeDataTypes.STRING,设置defaultValueDataTypes.OBJECTID,插入数据库时候会将默认值生成OBJECTID格式的字符串;

module.exports = function(sequelize, DataTypes) {
  var User = sequelize.define("User", {
    id:{
      type: DataTypes.STRING,
      defaultValue: DataTypes.OBJECTID,
      primaryKey: true, // 定义主键
      comment: "OBJECTID主键"
    },
    name: {
        type:DataTypes.STRING, //字符串,默认长度 255,
      comment: "用户姓名"
    },
    account: {
      type:DataTypes.STRING,
       validate: {
        isEmail: {
          msg: "用户账号必须是邮箱!"
        },
      },
      comment: "用户账号,使用邮箱注册"
    },
    pwd: {
      type:DataTypes.STRING,
      comment: "用户密码,使用MD5"
    }
  );

  return User;
};
时间: 2024-10-13 02:39:07

【sequelizejs实战】sequelizejs -DataTypes 添加OBJECTID类型的相关文章

从零开始编写自己的C#框架(21)——添加分类类型页面

页面权限与页面控件权限经过简单的调试后,终于启用起来了,以后大家添加新页面时,就必须按照本章介绍的方法,将你新增的页面注册到系统中,这样才能访问与进行相关操作. 下面讲讲如何创建一个分类类型的页面. 分类类型,顾名思义指的是按照一定规律.特点进行归类划分,放到一块的集合.我们开发时这些分类类型,经常用下拉列表来表现,如果有多级分类时,采用的是下拉树列表方式显示. 普通下拉列表 下拉树列表 下面将介绍如何从创建数据表.修改文件到权限绑定逐个步骤进行说明. 首先,我们先要创建好数据表 我们打开数据字

如何在ASP.NET的web.config配置文件中添加MIME类型

常常有一些特殊的MIME类型是IIS中没有的,一般来说要我们自己手动添加.如果网站经常更换服务器或者网站代码是提供给多个用户使用,那么会造成网站中用到的特殊的MIME类型要经常性的在IIS上配置.这里考虑到一个网站配置通用性问题,所以我们可以将MIME类型添加到ASP.NET网站的配置文件中,这样用户就不用一直配置IIS了. 一般来说我们是将MIME的这部份信息配置在system.webServer节点的staticContent节点中,配置的时候只要设置mimeMap节点中的fileExten

zabbix之 添加媒介类型(5)

1.添加媒介类型 administration --> media types --> create media type 2.为zabbix的用户定义定义各种媒介通道的接收方式和关联系统账号上的收件人 administration --> user --> admin --> media

使用反射为泛型集合添加其他类型的数据时遇到的问题

泛型是提供给javac编译器使用的,可以限定集合中的输入类型,让编译器挡住源程序中的非法输入,编译器编译带类型说明的集合进会去掉“类型”信息,使程序运行效率不受影响. 由于编译生成的字节码会去掉泛型的类型信息,只要能跳过编译器,就可以往某个泛型集合虽加入其它类型的数据. 所以我们可以用反射为泛型集合添加其他类型的数据. 例1: ArrayList<Integer> arrayList = new ArrayList<Integer>(); arrayList .add(10); a

如何在caffe中添加新类型的layer

如何在caffe中添加新类型的layer 参考:https://github.com/BVLC/caffe/issues/684 Add a class declaration for your layer to the appropriate one of common_layers.hpp,data_layers.hpp, loss_layers.hpp, neuron_layers.hpp, or vision_layers.hpp. Include an inline implement

WordPress主题制作教程10:添加文章类型插件Custom Post Type UI

下载 Custom Post Type UI>> 用Custom Post Type UI添加自定义文章类型对于新手来说最简单不过了,下载安装后,在插件栏启用一下,就可以开始添加文章类型了 添加后,可以看见左栏多了“产品”: 你还可以创建完类型后,在CPT UI菜单下的import/Export->Get Code的这段代码贴到functions.php中,这样不需要安装该插件也可以实现文章类型的定义.

oracle如何向空表中添加一个类型为clob的非空列

一般的添加非空列的步骤是:先add可以为空的列,然后update该列为一个值(比如0),最后modify该列的类型 但是遇到类型为clob的就不行了.在modify这步时报错:ORA-22296:invalid ALTER TABLE option for conversion of Long datatype to LOB,于是去找了下22296错误的详细信息:(http://docs.oracle.com/cd/E11882_01/server.112/e17766/e19999.htm#O

Fiddler抓包10-会话框添加请求类型(get、post)

前言 在使用fiddler抓包的时候,查看请求类型get和post每次只有点开该请求,在Inspectors才能查看get和post请求,不太方便.于是可以在会话框直接添加请求方式. 一.添加会话框菜单 1.点会话框菜单(箭头位置),右键弹出选项菜单 2.选择Customize columns选项,Collection选项选择Miscellaneous 3.Field Name选择:RequestMethod 4.点Add按钮即可添加成功 二.隐藏会话菜单 1.选择需要隐藏的菜单,右键.选择Hi

[PHPCMS V9二次开发]自定义字段模型-添加字段类型

步骤/方法 打开phpcms\modules\content\fields目录,复制文件夹downfiles,并改名为textgroups. 打开phpcms\modules\content\fields\fields.inc.PHP文件,增加字段类型: 'textgroups'=>'多文件上传', 打开phpcms\modules\content\fields\textgroups目录(第一步复制的文件夹),修改以下文件: form.inc.php function textgroups($f