Quiero encontrar todos los documentos cuyos captadores devuelvan un valor particular. Específicamente, en mi esquema de posición, tengo una propiedad llamada cantidad descubierta y quiero encontrar todos los documentos de posición con cantidad descubierta = 10.
Cuando hago const positions = await Position.find({uncoveredQuantity : 10});
devuelve todos los documentos con varios valores diferentes de cantidad descubierta, ¡no los que son 10! Lo interesante es que mi función getter, computeUncoveredQuantity, se llama cuando se llama a Position.find()
, e imprime la instrucción console.log.
function calculateUncoveredQuantity(this: PositionBaseDocument) { console.log("getter called"); let quantityLeft = this.quantity; const dest = this.direction === "in" ? this.closedBy : this.isCloseFor; if (!dest) return quantityLeft; for (const pos of dest) { quantityLeft -= pos.amount; } return quantityLeft; } const PositionCloseSchema = { position: { type: mongoose.Schema.Types.ObjectId, ref: "Position", }, amount: { type: Number, min: 0, }, }; const positionSchema = new mongoose.Schema( { direction: { type: String, enum: CONSTANTS.directions, required: true, }, quantity: { type: Number, required: true, min: 0, }, uncoveredQuantity: { type: Number, set: calculateUncoveredQuantity, default: calculateUncoveredQuantity, get: calculateUncoveredQuantity, }, closedBy: { type: [PositionCloseSchema], required: function (this: PositionBaseDocument) { return this.direction === "in"; }, }, isCloseFor: { type: [PositionCloseSchema], required: function (this: PositionBaseDocument) { return this.direction === "out"; }, }, }, { timestamps: true, toJSON: { getters: true, }, toObject: { getters: true }, } ); export const Position = mongoose.model("Position", positionSchema);