Tut mir leid, wenn das offensichtlich ist, aber ich googelte seit Stunden und das meiste Ergebnis bezieht sich auf Sub-Dokument/geschachtelt-Schema, die für Array von Objekt und nicht mein Fall ist.Wie kann die Validierung eines mongoose Kindelements in einem Schema hinzugefügt werden?
Der Einfachheit halber konstruiere ich nur ein minimales Objekt, aber das Konzept ist das gleiche.
Ich habe ein Mungo-Schema wie folgt, ich will von validateFunction Vater Objekt validieren, die die validateFunction nur prüft, ob Vorname/Name existiert oder nicht:
var PersonSchema = new Schema({
firstName : String,
lastName : String,
father : {
firstName: String,
lastName: String
},
mother : {
firstName: String,
lastName: String
}
};
ich versucht habe
var PersonSchema = new Schema({
firstName : String,
lastName : String,
father : {
type: {
firstName: String,
lastName: String
},
validate : validateFunction
},
mother : {
firstName: String,
lastName: String
}
};
Das scheint zu funktionieren, aber nach dem Lesen Mongoose Schema Type scheint es, dass der Typ kein gültiger Typ in Mungo ist.
Kann mir jemand den richtigen Weg zeigen, um die Validierung für ein Kindobjekt (Vater) hinzuzufügen?
Hinweis: Ich habe diese SO, die ähnlich ist, aber ich möchte 'Vater' in einer separaten Sammlung nicht speichern, da die Person das einzige Objekt ist, das 'Vater' verwenden, so denke ich Vater so innen sein Objekt "Person"
Edit: Ich @Azeem Vorschlag mit dem folgenden Code haben getestet:
var log = function (val) {
console.log(val);
return true ;
}
var validateFunction = function (val) {
if (typeof val === 'undefined') {
return false;
}
console.log(typeof val, val);
return true;
}
var many = [
{ validator: log, msg: 'fail to log' },
{ validator: validateFunction, msg: 'object is undefined' }
];
var PersonSchema = new Schema({
firstName : String,
lastName : String,
father : {
firstName: String,
lastName: {type : String }
validate : many // following http://mongoosejs.com/docs/api.html#schematype_SchemaType-validate
},
mother : {
firstName: String,
lastName: String
}
});
var PersonModel = mongoose.model("PersonTest", PersonSchema);
var josephus = new PersonModel({firstName:'Josephus', father:{lastName:null}});
josephus.save(function(error) {
console.log("testing", error);
})
und erhielt Fehler
***/index.js:34
validate : many
^^^^^^^^
SyntaxError: Unexpected identifier
at Module._compile (module.js:439:25)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
at node.js:945:3
, wenn das Schema auf dem folgenden geändert wird, funktioniert es (unter Beweis stellen von Validate Funktion läuft einwandfrei)
var PersonSchema2 = new Schema({
firstName : String,
lastName : String,
father : {
firstName: String,
lastName: {type : String ,validate : many}
},
mother : {
firstName: String,
lastName: String
}
});
danke, tut mir leid, wenn ich meine Frage nicht richtig bin, weiß ich, ich kann Validierung auf dem Blattknoten hinzufügen, ich möchte die Validierung auf dem Elternknoten des Blattes hinzufügen, das ist die 'Adresse' Objekt in Ihrer Probe Code. –