Tengo un esquema en mongoose que hace referencia a otro esquema, por ejemplo:
OrderSchema = new Schema({ createdBy: { ref: 'User', type: ObjectId } })En mi esquema de usuario, estoy usando un complemento de eliminación temporal para mantener las referencias. Para consultas de búsqueda de usuarios normales, el complemento agrega un where {deleted: {$ne: true}} a la consulta mediante un gancho de búsqueda previa.
Cuando trato de encontrar todos los pedidos con createdBy completados, la consulta eliminada también se aplica para que no se completen los usuarios eliminados (suavemente). Puedo omitir la consulta de eliminación temporal al proporcionar un parámetro "includeDeleted" en las opciones de población, esto funciona bien para consultas específicas.
Me gustaría poder especificar esta opción en la definición del esquema para que no dependa de cada consulta para incluir las opciones, por ejemplo:
// doesnt work, options are not supplied to populate query OrderSchema = new Schema({ createdBy: { ref: 'User', type: ObjectId, options: { includeDeleted: true } } })Los rellenos virtuales funcionan de esta manera:
// WORKS OrderSchema.virtual('_createdBy', { ref: 'User', ..., options: { includeDeleted: true } })¿Tal vez hay otras opciones para proporcionar opciones de población predeterminadas en la definición del esquema? No he podido encontrar nada en la documentación.
Otra solución sería buscar manualmente las opciones de población en el complemento de eliminación temporal, pero eso requiere que yo sepa si una consulta es una "consulta de población" en el gancho de búsqueda previa.