我有我的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/

10-11 02:06