I have two models. Project and Server. A project has many servers. Many Servers have one Project. This works great for servers. The project field is populated correctly. But the servers field in the Project is not populated.
The schemas look like this:
var ProjectSchema = new Schema({
name: String,
created: String,
updated: String,
servers: [{
type: Schema.ObjectId,
ref: 'Server'
}]
});
var ServerSchema = new Schema({
name: String,
iheap: Number,
mheap: Number,
node: String,
cell: String,
cluster: String,
stage: String,
created: String,
updated: String,
project: {
type: Schema.ObjectId,
ref: 'Project'
}
});
Server has the project field populated.
[
{
"_id": "55899afad599d0cabdfa60c7",
"created": "2015-06-23T19:44:26+02:00",
"stage": "Test",
"cluster": "AppServerCluster01",
"cell": "Cell01",
"node": "Node01",
"mheap": 1,
"iheap": 1,
"name": "a",
"project": {
"_id": "55899af1d599d0cabdfa60c6",
"created": "2015-06-23T19:44:17+02:00",
"name": "asd",
"__v": 0,
"servers": []
},
"__v": 0
}
]
Servers field is not populated on a project
[
{
"_id": "55899af1d599d0cabdfa60c6",
"created": "2015-06-23T19:44:17+02:00",
"name": "asd",
"__v": 0,
"servers": []
}
]
And this is how i do the populate. Projects:
exports.getProjects = function(req, res) {
Project.find({}).populate("servers").exec(function(err, projects) {
if(err) {
console.log("Error: " + err);
res.send(err);
} else {
console.log("Got projects " + projects);
res.json(projects);
}
});
};
Servers:
exports.getServers = function(req, res) {
Server.find({}).populate('project').exec(function(err, servers) {
if(err) {
console.log('Error: ' + err);
res.send(err);
} else {
res.json(servers);
}
});
};
This is how i do the insert
exports.createProject = function(req, res) {
var project = new Project();
project.name = req.body.name;
project.created = moment().format();
project.save(function(err) {
if(err) {
console.log("Error: " + err);
res.send(err);
} else {
console.log("Project created. project: " + project);
res.json({ 'message': 'Project greated', 'project': project });
}
});
};
exports.createServer = function(req, res) {
var server = new Server();
server.project = req.body.project;
server.name = req.body.name;
server.iheap = req.body.iheap;
server.mheap = req.body.mheap;
//server.node = req.body.node;
//server.cell = req.body.cell;
//server.cluster = req.body.cluster;
server.node = "Node01";
server.cell = "Cell01";
server.cluster = "AppServerCluster01";
server.stage = req.body.stage;
server.created = moment().format();
server.save(function(err) {
if(err) {
console.log('Error: ' + err);
res.send(err);
} else {
console.log('Server created. ' + server);
res.json({ "message": "Server created!", "server": server });
}
});
};
Serverinstance to aProjectinstance properly? Because it doesn't look like it judging by what's being stored in the database. In other words: show us the code where you relate both types of instances to each other.