JavaScript
x
13
13
1
const dbConfig = require("../config/config.js");
2
const mongoose = require("mongoose");
3
mongoose.Promise = global.Promise;
4
const db = {};
5
db.mongoose = mongoose;
6
db.url = dbConfig.url;
7
db.users = require("./users.model.js")(mongoose);
8
db.listservices = require("./listservices.model.js")(mongoose);
9
db.services = require("./services.model.js")(mongoose);
10
db.reviewservices = require("./reviewservices.model.js")(mongoose);
11
module.exports = db;
12
13
listservices.model.js
JavaScript
1
23
23
1
module.exports = mongoose => {
2
const Listservices = mongoose.model(
3
"listservices",
4
mongoose.Schema(
5
{
6
type: String,
7
services_name: String,
8
image: String,
9
active: Boolean,
10
services: [{
11
type: mongoose.Schema.Types.ObjectId,
12
ref: 'Services'
13
}]
14
},
15
{ timestamps: true }
16
)
17
);
18
19
20
return Listservices;
21
};
22
23
Services.model.js
JavaScript
1
32
32
1
```module.exports = mongoose => {
2
// const Listservices = require('./listservices.controller');
3
4
const Services = mongoose.model(
5
"services",
6
mongoose.Schema(
7
{
8
name: String,
9
description: String,
10
otherdetails: String,
11
location: String,
12
coordinate: Array,
13
photos: Array,
14
service_provided: String,
15
verified_by: Array,
16
closed: Boolean,
17
active: Boolean,
18
servicescategories: {
19
type: mongoose.Schema.Types.ObjectId,
20
ref: 'listservices'
21
},
22
reviewservices: [{
23
type: mongoose.Schema.Types.ObjectId,
24
ref: 'reviewservices'
25
}],
26
},
27
{ timestamps: true }
28
)
29
);
30
return Services;
31
};
32
JavaScript
1
2
1
Controller
2
exports.findAll = (req, res) => { const services = req.query.services; var condition = services ? { services: { $regex: new RegExp(services), $options: “i” } } : {}; Services.find(condition ).populate(‘servicescategories’)
JavaScript
1
11
11
1
.then(data => {
2
res.send(data);
3
console.log(data);
4
})
5
.catch(err => {
6
res.status(500).send({
7
message:
8
err.message || "Some error occurred while retrieving services."
9
});
10
});
11
};
JavaScript
1
2
1
The output is showing id, but not fetching the data from the other collection
2
[{“_id”:”60a27c66d87174379c93d7b5″,”name”:”MY data name”,”closed”:false,”active”:false,”listservices”:”60a2606680405c41c05cf005″,”createdAt”:”2021-05-17T14:23:34.412Z”,”updatedAt”:”2021-05-17T14:23:34.412Z”,”__v”:0}]
JavaScript
1
2
1
Thanks in advance
2
Advertisement
Answer
You are trying to use different name in your controller, populate receives 4 parameters- path, selection(fields to be return) , condition, options (like {limit:10}):
JavaScript
1
18
18
1
exports.findAll = (req, res) => {
2
const services = req.query.services;
3
var condition = services ? { services: { $regex: new RegExp(services), $options: "i" } } : {};
4
Services.find().populate({path: 'servicescategories', select: 'services_name'}) // put correct name here
5
.then(data => {
6
res.send(data);
7
console.log(data);
8
})
9
.catch(err => {
10
res.status(500).send({
11
message:
12
err.message || "Some error occurred while retrieving services."
13
});
14
});
15
};
16
17
18