在mongoose中使用uuid作为objectID

时间:2016-04-13 17:53:21

标签: javascript mongoose uuid

如何使用UUID生成的字符串而不是原始的mongoose ObjectID字符串,保留objectID方法(ValueOf(),To String(),....)?

当我生成UUID并尝试在我的mongoose模式中使用

在我的模型中:

var uniqueUUID = uuid.v4();
createUser = user({
            'myid': uniqueUUID,
});

在我的模型/架构中:

var userSchema = new mongoose.Schema({

_id: Schema.Types.ObjectId

});

收到验证错误。

ValidationError: user validation failed

1 个答案:

答案 0 :(得分:0)

您正在尝试添加模式中不存在的密钥。您的架构中没有定义myid密钥。默认情况下,mongoose不允许使用尚未预先定义的密钥。

您可以将其更改为:

var userSchema = new mongoose.Schema({

_id: {type: String, default: uuid.v4}

});

使用生成的uuid.v4值自动为对象id赋值。

创建用户使用时:

var newUser = new user();

已自动为文档分配了id。请记住保存它。 :)

如果您想要另一个名为myid的id字段,可以按照如何添加_id将其添加到架构中。