В настоящее время я использую MongooseJS, чтобы изменить «_id» для каждой из моих коллекций на UDID BSON.Кроме того, я использую виртуальный «id» для преобразования «_id» в его строковый эквивалент.Он работает довольно хорошо и дает мне преимущество использования UUID для «_id», а не сохранения его в виде строки, которая тратит ресурсы диска.
Вот фрагмент кода, демонстрирующий, как это делается
const uuid = require("uuid-mongodb");
require("mongoose-uuid2")(mongoose);
let schema_options = {
"id": false,
"toObject": {
"getters": true,
"virtuals": true
},
"toJSON": {
"getters": true,
"virtuals": true,
"transform"(doc, ret) {
delete ret._id;
}
} };
let schema = new Schema(
{
"_id": {
"type": UUID,
"default": uuid.v4,
"required": true
},
"code": {
"type": String,
"required": true,
"unique": true
},
"name": {
"type": String,
"required": true
}
},
schema_options);
schema.virtual("id").get(function() {
return uuid.from(this._id).toString();
});
schema.virtual("id").set(function(uuid_string) {
this._id = uuid.from(uuid_string);
});
Однако, если я добавлю «ref» в другую коллекцию, как с
schema.add({
"test_references": {
"type": [
{
"type": mongoose.Types.UUID,
"ref": "test_references"
}
],
"required": true
}
});
, я получу хэш-представление BSON UUID.Есть ли способ сделать MongooseJS во время операции get, чтобы показать эти ссылки в виде строковых представлений UUID
, т. Е. - я ожидаю это "104e0f2e-3b54-405b-ba81-e87c5eb9f263", но получу это "EE4PLjtUQFu6geh8XrnyYw =="
Примечание: : Если это неправильный форум для этого поста, пожалуйста, дайте мне знать, и я немедленно перенесу это на правильный форум