I have 5 Different Collections in my mongodb, the 4 collections are to connected to one connection, But I didn't used ref, instead I made is that I get the Id of 4 collections and then saved it to the 5th collection so that I still have common field that I can use as a reference
Here is my Collections structure
list Collection
_id
type_id
detail_id
address_id
inquiries_id
account_id
Type Collection
_id
type
class
Detail Collection
_id
bedr
diningr
livingr
kitchenr
bathr
Address Collection
_id
city
brgy
street
bldgno
floorno
roomno
Inquiries Collection
_id
views
inquires"
The list Collection will have the Ids of 4 another Collection.
This is what Im trying to achieve
[ {
"_id": "5907747e424c860f7495ad46",
"account_id": "5908f3381cd9810ea8e2b517",
"type": {
"type" : "apartment",
"class" : "middle"
},
"detail": {
"bedr": 4,
"diningr": 2,
"livingr": 1,
"kitchenr": 1,
"bathr": 4
},
"address": {
"city" : "lucena",
"brgy" : "8",
"street" : "rose",
"bldgno" : "24",
"floorno": "2",
"roomno": "205"
},
"inquiries": {
"views" : 0,
"inquires" : 0
}
},
{
"_id": "5907747e424c860f7495ad47",
"account_id": "5908f3381cd9810ea8e2b517",
"type_id": {
"type" : "apartment",
"class" : "middle"
},
"detail": {
"bedr": 4,
"diningr": 2,
"livingr": 1,
"kitchenr": 1,
"bathr": 4
},
"address": {
"city" : "lucena",
"brgy" : "8",
"street" : "rose",
"bldgno" : "24",
"floorno": "3",
"roomno": "307"
},
"inquiries": {
"views" : 0,
"inquires" : 0
}
}, ]
First I get all the data inside the list collection which is the Ids of 4 Collection and then I tried to loop it so that I can get the another data from other collections
for(var loop =0 ; loop < list.length; loop++){
var pt_id = list[loop].type_id;
var pa_id = list[loop].address_id;
var pd_id = list[loop].detail_id;
var pi_id = list[loop].inquiries_id;
}
I'd use async inside for loop then concate it into "testresult" var using +=
here is my code
var PL = require('../models/list');
var PT = require('../models/type');
var PA = require('../models/address');
var PD = require('../models/detail');
var PI = require('../models/inquiry');
var cryption = require('../services/encrypt_decrypt');
var crypt = new cryption();
var async = require('async');
module.exports.read = function (request, response) {
var decryptedId = crypt.decrypt(request.decode.id);
var propertylistquery = PL.find({}).where('account_id').equals(decryptedId).select({"_id":0,"__v":0});
propertylistquery.exec(function (error, list) {
if (error) {
return response.status(500).send({success: false, error: error, message: 'Something went wrong.'});
}
if (!list) {
return response.status(200).send({success: false, message: 'User not found in the database.'});
}
var testresult;
for(var loop =0 ; loop < list.length; loop++){
var pt_id = list[loop].type_id;
var pa_id = list[loop].address_id;
var pd_id = list[loop].detail_id;
var pi_id = list[loop].inquiries_id;
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Getting the property type
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
var ptquery = PT.find({}).where('_id').equals(pt_id).select({"__v":0});
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Getting the property address
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
var paquery = PA.find({}).where('_id').equals(pa_id).select({"__v":0});
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Getting the property detail
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
var pdquery = PD.find({}).where('_id').equals(pd_id).select({"__v":0});
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Getting the propertyinquiry
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
var piquery = PI.find({}).where('_id').equals(pi_id).select({"__v":0});
var resources = {
Type : ptquery.exec.bind(ptquery),
Address : paquery.exec.bind(paquery),
Detail : pdquery.exec.bind(pdquery),
Inquiry : piquery.exec.bind(piquery)
};
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Asynchrozing the queries
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
async.parallel(resources, function (error, results){
if (error) {
response.status(500).send(error);
return;
}
testresult += results;
//console.log(results);
});
}
console.log(testresult);
response.json({success: true, data: list, message: 'Successfully fetched all property.'});
});
};
when I log the "result" var inside for loop, it has a data but when I try to log the "testresult" var, it is undefined
What will I do get my desire output?
via JerVi
No comments:
Post a Comment