New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

manual-populate

Package Overview
Dependencies
Maintainers
1
Versions
4
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

manual-populate

This module populates specified fields of documents from a different mongodb collection when _id of referred document (ObjectId) is stored as hexadecimal string in the referring document field.

latest
Source
npmnpm
Version
1.0.4
Version published
Maintainers
1
Created
Source

Synopsis

This module populates specified fields of documents from a different mongodb collection when _id of referred document (ObjectId) is stored as hexadecimal string in the referring document field.

Motorparts
{
	_id: ObjectId("575d384436dji4u9400fe336")
}


Car
{
	motorparts : "575d384436dji4u9400fe336" //hexadecimal string value of above
}

More information

With this you do not need to hit database n * k no of times to populate the k fields of n documents, rather only k database hits are used. Deep populate level one (embedded object) is also supported.

Also what happens if referred _id doesn't exist in foreign collection? Those entries have been made undefined.

Code Example

var manualPop = require('manual-pop');
var userModel = models.userModel; //mongoose models
var serviceModel = models.serviceModel; //mongoose models

var data = [ 
	{
    		userId: '575d384436de20e9400fe336',
		serviceId: '934d384436de20e9400fkjhu'
    		city: 'mohali',
    		house: '3018',
    	},
    	{
        	userId: '575d383387b848d140cb75ad',
		serviceId: '934d384436de20e9400f12m'
        	city: 'chandigarh',
        	house: '3049',
    	}
];

var populateOptions = [
	{
		path: "userId",
		model: userModel,
		query: {},
		projection: {name: 1}
	},
	{
		path: "serviceId",
		model: serviceModel,
		query: {},
		projection: {serviceName: 1}
	}
]

manualPop(data, populateOptions, function (err, result) {
    console.log(err, result);
});

/*output
	err:- null
	result:- [ 
		{
    			userId: {name: "anchal", _id: "575d384436de20e9400fe336"},
			serviceId: undefined,
    			city: 'mohali',
    			house: '3018',
    		},
    		{
        		userId: {name: "sahil", _id: "575d383387b848d140cb75ad"},
			serviceId: {serviceName: "blackOp", _id: "934d384436de20e9400f12m"},
        		city: 'chandigarh',
        		house: '3049',
    		}
	];
*/

Motivation

The module was created because the project i was part of, stored _id (ObjectId) of referred documents as hexadecimal String in the referring document, making it not possible to use populate (mongoose) or $lookup (mongodb aggregation) functionalities.

FAQs

Package last updated on 12 Jun 2016

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts