1
ネットを2日間検索しても、特定の回答が見つかりませんでした。私はユーザールートとモデルのために以下のnode.jsコードを持っています。ユーザー名と電子メールがMongoDBに表示されていないかどうかを確認し、存在する場合はメッセージを表示する方法を教えてください。ユーザ名とメールアドレスがデータベース内で一意であるかどうかを確認してください
モデル:
var mongoose = require('mongoose');
var bcrypt = require('bcryptjs');
// User Schema
var UserSchema = mongoose.Schema({
username:{type: String , required:true, index: true, unique:true},
email:{type: String, required:true, index: true, unique:true},
password:{type: String, required:true}
});
module.exports = mongoose.model('User', UserSchema)
ルート:
var express = require('express');
var router = express.Router();
var User = require('../models/user');
var bcrypt = require('bcryptjs');
// Get Homepage
router.get('/', function(req, res){
res.render('index');
});
router.get('/register',function(req,res){
res.render('register');
});
// submit form
router.post('/submit', function(req, res){
// retrieve data from posted HTML form
var username = req.body.username;
var email = req.body.email;
var password = req.body.password;
var password_confirm = req.body.password_confirm;
// express validator
req.checkBody('username','Username is required').notEmpty();
req.checkBody('email','Email is required').notEmpty();
req.checkBody('email','Invalid email').isEmail();
req.checkBody('password','Password is required').notEmpty();
req.checkBody('password','Password must contain at least 6 characters').isLength({min:6});
req.checkBody('password_confirm','Password mismatch').equals(req.body.password);
// store the errors
var errors = req.validationErrors();
if(errors){res.render('register',{errors:errors});}
else {
// hash password
var salt = bcrypt.genSaltSync(10);
var hash = bcrypt.hashSync(password, salt);
password=hash;
// load data into model
var newUser = new User ({username:username, email:email, password:password});
// save the new user
newUser.save(function(err,newUser){
if(err){console.error(err);}
// console.error is same, but in stderr form
else{
console.log('new user saved successfully');
console.log(newUser);
}
});
res.redirect('/');
}
});
module.exports = router;
返信いただきありがとうございます。同じユーザ名で新しいエントリをmongodbに保存することはできます。 console.log(err)を使用すると、エラーは発生しません。あなたが提供した別のケースのリンクを確認しました。少なくとも、そのケースのエラーメッセージがありました。どうして私は何の不具合もしていないのですか? – unclegood
と同じ方法で変数を定義していない可能性があります。ここで私はあなたがこの 'var errors = req.validationErrors();'コンソールログ 'errors'を使って実際に何が起きているのかを見ています。 – ZombieChowder