我的mongo db架构如下:
var MyTable = mongoose.model('items', {
name: String,
keyId: String
});
我想将keyId存储为正在创建的项目的'_id'的哈希值。 例如。 比如,我向db“Hello world”添加一个项目,mongodb会在插入时为项目创建一些“_id”。
我想使用_id
以便我可以使用它并为插入的同一项生成一个hashid。像这样:
var Hashids = require("hashids"),
hashids = new Hashids("this is my salt");
var id = hashids.encrypt("507f191e810c19729de860ea");
有没有方法,我可以事先知道id。或者我可以让mongodb根据我指定的条件为我的id
字段生成值。
答案 0 :(得分:1)
您可以使用预保存middleware在保存之前对对象实例执行操作。
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);
答案 1 :(得分:1)
请注意这一点。 Hashids模块有一个EncryptHex(或v1.x中的EncodeHex),用于mongodb id。