var UserSchema = new Schema({
job : [{
type : mongoose.Schema.Types.ObjectId,
experience : String,
grade : String,
ref: 'Company'}]
});
Benutzer kann mehrere Jobs haben. Wenn ich einen Auftrag an den Benutzer hinzuzufügen, ich tun, wie folgt:Referenzieren eines anderen Schemas in Mungo mit zusätzlichen Feldern
Wenn ich habe:
req.body.job == {type : company._id, experience : "bla bla", grade : "smth"}
und
function addJob(req, res, next) {
var userId = req.user._id;
var job = req.body.job;
return User.findById(userId).exec()
.then(user => {
user.job.push(job);
return user.save()
.then(handleEntityNotFound(res))
.then(respondWithResult(res))
.catch(handleError(res));
});
}
ich einen Fehler bekam:
Unhandled rejection CastError: Cast to ObjectId failed for value "[object Object]" at path "job"
Aber wenn ich das tue:
req.body.job == {type : company._id, experience : "bla bla", grade : "smth"}
mit
function addJob(req, res, next) {
var userId = req.user._id;
var job = req.body.job;
return User.findById(userId).exec()
.then(user => {
user.job.push(job.type); // <----------
return user.save()
.then(handleEntityNotFound(res))
.then(respondWithResult(res))
.catch(handleError(res));
});
}
Es funktioniert aber experience
und grade
sind nicht definiert. Wie kann ich diese Felder angeben?
EDIT:
Also änderte ich UserSchema
wie:
var UserSchema = new Schema({
job : [{
_company : {
type : mongoose.Schema.Types.ObjectId,
ref: 'Company'
},
experience : String,
grade : String
}]
});
Und ich versuchte:
//req.body.job == {_company:{type : company._id}, experience : "bla bla", grade : "smth"}
function addJob(req, res, next) {
var userId = req.user._id;
var job = req.body.job;
return User.findById(userId).exec()
.then(user => {
user.job.push(job);
return user.save()
.then(handleEntityNotFound(res))
.then(respondWithResult(res))
.catch(handleError(res));
});
}
Ich habe eine 500 (Internal Server Error) Fehler om Server
ABER
//req.body.job == {_company:{type : company._id}, experience : "bla bla", grade : "smth"}
function addJob(req, res, next) {
var userId = req.user._id;
var job = req.body.job;
return User.findById(userId).exec()
.then(user => {
user.job.push(job._company); //<-----------------
return user.save()
.then(handleEntityNotFound(res))
.then(respondWithResult(res))
.catch(handleError(res));
});
}
Arbeiten ohne Fehler. Allerdings gibt es immer noch nichts über grade
und experience
Feld in mongodb ...
Ja ich so etwas wie dies dachte. Also ich denke, es gibt keine andere Lösung, oder? – Emidomh
@Emidomh Ich glaube nicht, dass es eine andere Lösung gibt, sorry:/ – GnsBeldaran
Ich bearbeitet meinen Beitrag, bitte werfen Sie einen Blick :) – Emidomh