布莱恩F爱
向一位来自Portlandyobet英雄联盟的谷歌开发专家学习Angular、Web技术和Node.js。
广告 ·ultimatecourses.com
用终极课程学习Angular的正确方法

哈希任何ColdFusion类型

为了生成缓存对象的唯一标识符,我需要创建一个函数来接受任何数据类型,并从该对象返回一个唯一的散列。我认为这是一个很有用的函数,所以我想在这里分享一下。

这个函数的用例是为缓存查询生成id。我使用的cacheregion和cacheid属性为< cfquery >标签。

< cfquery数据源= " # getDatasource () # " name = "的地方。问" cacheregion = " # region.getRegion () # # region.getId cacheid = ()#"> ....< / cfquery >

我只是有一个地区具有方法的对象:

  • 公共字符串函数getRegion()
  • 公共字符串函数

getId ()方法,我需要生成唯一标识符。要做到这一点地区对象需要能够从任何变量创建惟一的ID(或散列)。

数据类型

这里是我序列化或哈希的数据类型:

  • 简单(字符串、整数、实数、布尔值、日期/时间)
  • 二进制
  • 数组
  • 结构体
  • 查询
  • 对象

Hashify ()

下面是my的最终代码hashify ()函数。如果您传递任何对象给hashify ()函数,您将获得该对象的MD5散列。

if (IsNull(arguments.value)){//返回一个空字符串} //返回一个简单的值if (IsSimpleValue(arguments.value)){返回散列(arguments.value)价值,”MD5”);} //在Base64中返回二进制值if (IsBinary(arguments.value)) {return hashify(value=ToBase64(arguments.value));} //序列化ColdFusion对象if (IsObject(arguments.value)) {return hashify(value=ObjectSave(arguments.value));} //struct if (IsStruct(arguments.value)) {var values = "";for (var key in arguments.value) {values &= hashify(value=key) & hashify(value=arguments.value[key]);}返回hashify(值=值);} //array if (IsArray(arguments.value)) {var values = "";(var i = ArrayLen (arguments.value);我> 0; i--){ values &= hashify(value=i) & hashify(value=arguments.value[i]); } return hashify(value=values); } //query if (IsQuery(arguments.value)) { return hashify(value=ObjectSave(arguments.value)); } }

布莱恩F爱

嗨,我是布莱恩。我对TypeScript, Angular和Node.js感兴趣。我和我最好的朋友邦妮结婚了,我住在波特兰,我经常滑雪。