Mongoose Boolean doğrulaması, girişimi kolaylaştırmak için Belirli bir alan true olarak ayarlanmışsa, bir mongoose belgesinin oluşturulmasını sağlamaya çalıştım (Bu alan, Elbette her zaman doğru, belgenin doğru bir şekilde oluşturulmuş olması durumunda, bu raporlama nedenleri içindir). Mongoose Bir dize sağlanırsa
Bu
basitleştirilmiş poc geçerli:var mongoose = require('mongoose')
mongoose.connect('mongodb://localhost:27017/playground')
var Schema = mongoose.Schema
var TestSchema = new Schema({
testField: {
type: Boolean,
required: true
}
})
// Try to ensure, that testField can only be true
TestSchema
.path('testField')
.validate(function (testField) {
return (testField === true || testField === 'true')
}, 'Test-field must be true!');
var Test = mongoose.model('test', TestSchema);
var newDoc = Test({
testField: 'some random string'
})
newDoc.save(function (err, newDoc) {
(err) ? console.log(err): console.log('newDoc was created')
})
sorun olduğunu ben bir Boole değeri yerine rastgele bir dize tedarik veya am rağmen "Boole dize" (örneğin "yanlış" ya da "doğru" yerine, olduğu Sadece yanlış/doğru), belge doğru olarak ayarlanmış halde, belge hala düzgün şekilde kaydediliyor.
"False" (Yanlış) ya da false sağlarım durumunda doğrulama doğru şekilde çalışır ve bir hata verir.
Görünüşe göre, doğrulamadan (ve görünüşe göre varsayılan eylemler) gerçekte çağrılmadan önce bir tür tip dökümü var. Onaylamamı düzeltmem için bir yol var mı, yoksa Mongoose-Object'i oluşturmadan önce nesneyi açıkça kontrol etmem gerekiyor mu?
Bu fongozozdur 4.3.6.
gibi doğrulayabilir? Tüm özellik türleri ile doğrulamadan önce aynı tür zorlama olur ... – Codepunkt
Hayır, henüz değil. Sadece bir geçici çözüm, ben şema onaylama geçmeden önce dizeyi ayrıştırmak/doğrulamak ... – BenSower
İki kat doğrulama vaat ediyorum. Veritabanındaki veritabanını mongoose kullanarak ve son nokta katmanındaki girişi doğrulamak için bir tane dezenfekte etmek. Doğrulama mantığını yeniden kullanmaya çalışıyorum. Yine de hoşlanma. İki kat doğrulama işlemine gerçekten ihtiyaç duyarsak hala emin değilim. – Codepunkt