You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
34 lines
590 B
34 lines
590 B
'use strict'; |
|
|
|
/*! |
|
* ignore |
|
*/ |
|
|
|
module.exports = function addIdGetter(schema) { |
|
// ensure the documents receive an id getter unless disabled |
|
const autoIdGetter = !schema.paths['id'] && |
|
schema.paths['_id'] && |
|
schema.options.id; |
|
if (!autoIdGetter) { |
|
return schema; |
|
} |
|
if (schema.aliases && schema.aliases.id) { |
|
return schema; |
|
} |
|
schema.virtual('id').get(idGetter); |
|
|
|
return schema; |
|
}; |
|
|
|
/** |
|
* Returns this documents _id cast to a string. |
|
* @api private |
|
*/ |
|
|
|
function idGetter() { |
|
if (this._id != null) { |
|
return this._id.toString(); |
|
} |
|
|
|
return null; |
|
}
|
|
|