我有我的mongo db模式,如下所示:
var MyTable = mongoose.model('items', {
name: String,
keyId: String
});
我想将keyId存储为正在创建的项目的'_id'的哈希值。
例如。
说,我将一个项目添加到数据库“Hello world”中,并且mongodb在插入时会为该项目创建一些“_id”。
我想利用
_id
,以便可以使用它并为要插入的同一项目生成一个hashid。像这样的东西:var Hashids = require("hashids"),
hashids = new Hashids("this is my salt");
var id = hashids.encrypt("507f191e810c19729de860ea");
有没有办法,我可以事先知道身份证。或者,我可以让mongodb根据我指定的条件为
id
字段生成值。 最佳答案
您可以使用pre save 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);
关于node.js - 基于mongodb '_id`属性创建哈希值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29181401/