イメージをmongoDbにアップロードするときにカスタム検証があります。元の名前は一意である必要があります。検証に合格すると、コードは正常に実行されます。しかし、失敗すると、エラーが発生します。 2つの引数を取るカスタムバリデーターは、mongoose> = 4.9.0では非推奨となっています。元の名前の一意性を検証する別の方法はありますか?またはエラーをキャッチする方法?助けてください。MongoDB - ハンドルエラーイベント
router.post('/upload',function(req,res){
Item.schema.path('originalname').validate(function(value, done) {
Item.findOne({originalname: value}, function(err, name) {
if (err) return done(false);
if (name) return done(false);
done(true);
});
});
upload(req,res,function(err, file) {
if(err){
throw err;
}
else{
var path = req.file.path;
var originalname = req.file.originalname;
var username = req.body.username;
var newItem = new Item({
username: username,
path: path,
originalname: originalname
});
Item.createItem(newItem, function(err, item){
if(err) throw err;
console.log(item);
});
console.error('saved img to mongo');
req.flash('success_msg', 'File uploaded');
res.redirect('/users/welcome');
}
});
});
あなたのようなそのフィールドに一意性を提供できるモデル
var ItemSchema = mongoose.Schema({
username: {
type: String,
index: true
},
path: {
type: String
},
originalname: {
type: String
}
});
var Item = module.exports = mongoose.model('Item',ItemSchema);
module.exports.createItem = function(newItem, callback){
newItem.save(callback);
}
エラーをキャッチする方法は? –
'.validate'を使用している間に値がコミットしているかどうかをチェックします – hardy