@nestjs/mongoose
Version:
Nest - modern, fast, powerful node.js web framework (@mongoose)
32 lines (31 loc) • 1.22 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.Prop = void 0;
const errors_1 = require("../errors");
const mongoose_constants_1 = require("../mongoose.constants");
const type_metadata_storage_1 = require("../storages/type-metadata.storage");
const TYPE_METADATA_KEY = 'design:type';
function Prop(options) {
return (target, propertyKey) => {
options = (options || {});
const isRawDefinition = options[mongoose_constants_1.RAW_OBJECT_DEFINITION];
if (!options.type && !Array.isArray(options) && !isRawDefinition) {
const type = Reflect.getMetadata(TYPE_METADATA_KEY, target, propertyKey);
if (type === Array) {
options.type = [];
}
else if (type && type !== Object) {
options.type = type;
}
else {
throw new errors_1.CannotDetermineTypeError(target.constructor?.name, propertyKey);
}
}
type_metadata_storage_1.TypeMetadataStorage.addPropertyMetadata({
target: target.constructor,
propertyKey: propertyKey,
options: options,
});
};
}
exports.Prop = Prop;
;