My APIはusers
JSONとしてPOSTします。特定のフィールドがJSONオブジェクトの一部として含まれている場合にのみ、そのフィールドを検証したいと思います。.pre saveを使用してユーザーを検証する
例えば、ユーザーは次のようになります。
{
"email" : "[email protected]",
"username" : "testing",
"name" : "Test User"
}
か、名前フィールドがない場合があります。
{
"email" : "[email protected]",
"username" : "testing"
}
を、私はname
は少なくとも6つの文字を持っていることを確認したいと思いますそれが含まれているフィールドの場合。
私はモデルに.pre
を使用して検証プロセスを構築しようとしていますが、予想通りのものではありません。
var UserSchema = new Schema({
id : String,
name : String,
email : String,
username : String
},{ timestamps: { createdAt: 'created_at',updatedAt: 'updated_at' } });
UserSchema.pre('save', function(next) {
console.log(this); //no evidence of name property here
if("name" in this){
console.log("Name found"); //this is always the output
} else {
console.log("Name not found");
}
next();
});
上記のコードはテスト用です。上記のいずれかのJSONオブジェクトを使用すると、コンソールに出力するときにオブジェクトにname
プロパティがないのに、出力は常に「名前が見つかりました」です。これはモデルにname
のプロパティがあるためですか?
'UserSchema'を書き留めますか? '//ここに名前プロパティの証拠がないのはどういう意味ですか、既にログに記録されているのは何ですか? –
これを今追加しました – tommyd456
JSONを 'name'なしで使用すると、端末のユーザオブジェクトを見ると' name'のプロパティはありません。問題は、この ''の名前はまだ存在するということですか? – tommyd456