Socket
Socket
Sign inDemoInstall

adminmate-express-mongoose

Package Overview
Dependencies
Maintainers
1
Versions
41
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

adminmate-express-mongoose - npm Package Compare versions

Comparing version 1.2.7 to 1.2.8

4

package.json
{
"name": "adminmate-express-mongoose",
"version": "1.2.7",
"version": "1.2.8",
"description": "Adminmate Express/Mongoose connector",

@@ -26,3 +26,3 @@ "author": "Marc Delalonde",

"dependencies": {
"adminmate-express-core": "^1.1.6",
"adminmate-express-core": "^1.1.7",
"lodash": "^4.17.21",

@@ -29,0 +29,0 @@ "moment": "^2.29.1",

@@ -0,9 +1,56 @@

const fnHelper = require('../helpers/functions');
module.exports = async (currentModel, data) => {
// Get relationship model
const relationshipModel = fnHelper.getModelObject(data.relationship_model);
if (!relationshipModel) {
return res.status(403).json({ message: 'Invalid request' });
}
// Default limit
let limit = data.limit || 10;
let _value = 1;
if (data.relationship_field && ['sum', 'avg'].includes(data.relationship_operation)) {
_value = `$${data.relationship_field}`;
}
const repartitionData = await relationshipModel
.aggregate([
{
$group: {
_id: `$${data.relationship_model_ref_field}`,
count: data.operation === 'avg' ? { $avg: _value } : { $sum: _value },
}
},
{
$project: {
key: '$_id',
value: '$count',
_id: false
}
}
])
.limit(limit)
.sort({ value: -1 });
const parentIds = repartitionData.map(d => d.key);
const parentData = await currentModel.find({ _id: parentIds }).select(data.field).lean();
repartitionData.forEach(d => {
d.item_model = data.model;
d.item_id = d.key;
const parent = parentData.find(p => p._id.toString() === d.key.toString());
if (parent) {
d.key = parent[data.field];
}
});
return {
success: false,
success: true,
data: {
config: null,
data: {}
data: repartitionData
}
};
};
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc