根据mongodb'_id`属性创buildhashid

我有我的mongo数据库架构如下:

var MyTable = mongoose.model('items', { name: String, keyId: String }); 

我想将keyId作为正在创build的项目的“_id”的哈希值来存储。 例如。 说,我添加一个项目分贝“你好世界”,和mongodb会创build一些“ID”插入时的项目。

我想利用_id这样我就可以使用它并为插入的相同项目生成一个hashid。 像这样的东西:

 var Hashids = require("hashids"), hashids = new Hashids("this is my salt"); var id = hashids.encrypt("507f191e810c19729de860ea"); 

有没有办法,我可以事先知道身份证。 或者我可以让mongodb根据我指定的标准为我的id字段生成值。

只是在这个说明。 Hashids模块有一个EncryptHex(或v1.x中的EncodeHex),用于与mongodb ID一起使用。

在保存之前,您可以使用预保存中间件在对象实例上执行操作。

 var MyTableSchema = new mongoose.Schema({ name: String, keyId: String }); var Hashids = require("hashids"); MyTableSchema.pre('save', function(next) { if (!this.keyId) this.keyId = new Hashids("this is my salt").encrypt("507f191e810c19729de860ea"); next(); }); var MyTable = mongoose.model('items', MyTableSchema);