optimization: projecting only what's needed
This commit is contained in:
@@ -213,7 +213,7 @@ export const updateOrAddBill = withUser(async (user:AuthenticatedUser, locationI
|
|||||||
if (addToSubsequentMonths && billYear && billMonth) {
|
if (addToSubsequentMonths && billYear && billMonth) {
|
||||||
// Get the current location to find its name
|
// Get the current location to find its name
|
||||||
const currentLocation = await dbClient.collection<BillingLocation>("lokacije")
|
const currentLocation = await dbClient.collection<BillingLocation>("lokacije")
|
||||||
.findOne({ _id: locationId, userId }, { projection: { bills: 0 } });
|
.findOne({ _id: locationId, userId }, { projection: { name: 1 } });
|
||||||
|
|
||||||
if (currentLocation) {
|
if (currentLocation) {
|
||||||
// Find all subsequent months that have the same location name
|
// Find all subsequent months that have the same location name
|
||||||
@@ -228,8 +228,8 @@ export const updateOrAddBill = withUser(async (user:AuthenticatedUser, locationI
|
|||||||
"yearMonth.month": { $gt: billMonth }
|
"yearMonth.month": { $gt: billMonth }
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}, { projection: { bills: 0 } })
|
}, { projection: { _id: 1 } })
|
||||||
.toArray();
|
.toArray();
|
||||||
|
|
||||||
// For each subsequent location, check if bill with same name already exists
|
// For each subsequent location, check if bill with same name already exists
|
||||||
const updateOperations = [];
|
const updateOperations = [];
|
||||||
@@ -238,12 +238,9 @@ export const updateOrAddBill = withUser(async (user:AuthenticatedUser, locationI
|
|||||||
.findOne({
|
.findOne({
|
||||||
_id: location._id,
|
_id: location._id,
|
||||||
"bills.name": billName
|
"bills.name": billName
|
||||||
}, {
|
}, {
|
||||||
projection: {
|
// We only need to know if a matching bill exists; avoid conflicting projections
|
||||||
"bills.$": 1,
|
projection: { _id: 1 }
|
||||||
"bills.attachment": 0,
|
|
||||||
"bills.barcodeImage": 0
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// Only add if bill with same name doesn't already exist
|
// Only add if bill with same name doesn't already exist
|
||||||
@@ -370,9 +367,10 @@ export const deleteBillById = withUser(async (user:AuthenticatedUser, locationID
|
|||||||
// Get the current location and bill to find the bill name and location name
|
// Get the current location and bill to find the bill name and location name
|
||||||
const location = await dbClient.collection<BillingLocation>("lokacije")
|
const location = await dbClient.collection<BillingLocation>("lokacije")
|
||||||
.findOne({ _id: locationID, userId }, {
|
.findOne({ _id: locationID, userId }, {
|
||||||
projection: {
|
projection: {
|
||||||
"bills.attachment.fileContentsBase64": 0,
|
"name": 1,
|
||||||
"bills.barcodeImage": 0
|
"bills._id": 1,
|
||||||
|
"bills.name": 1
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user