저는 NodeJS를 처음 사용합니다. 비동기 NodeJS에 대한 많은 질문이 있지만 정확히 무엇을 찾고 있는지 알 수 없습니다.내 기능을 NodeJS에서 비동기 적으로 실행
내 문제는 : 내 데이터베이스에 사용자 이름과 전자 메일이 이미 있는지 확인하고 싶습니다. 사용자 이름과 이메일을위한 두 개의 개별 기능. 또 다른 기능은 데이터를 데이터베이스에 저장하는 것입니다.
비동기 NodeJS 패턴을 사용하여이를 수행하는 방법을 알지 못합니다.
의 user.js (몽구스 스키마)
const mongoose = require('mongoose');
var userSchema = mongoose.Schema({
name: String,
username: { type: String, required: true, unique: true },
password: { type: String, required: true },
email: { type: String, required: true, unique: true},
aiub_id: String,
});
const Users = module.exports = mongoose.model('User', userSchema);
module.exports.addUser = function (user, callback) {
user.save(callback);
}
module.exports.usernameExist = function (givenUsername, callback) {
Users.find({ username: givenUsername }, callback);
}
module.exports.emailExist = function (givenEmail, callback) {
Users.find({ username: givenEmail}, callback);
}
하는 index.js (경로)
route.post('/signup', function(req, res){
// GRAB USER INFO FROM HTML FORM
var newUser = new User({
name : req.body.tfullName,
username : req.body.tusername,
password : req.body.tpassword,
email : req.body.temail,
aiub_id : req.body.tuserID
});
// This block send 200 if username doesn't exist
User.usernameExist(newUser.username, function (err, result){
if(err){
throw err;
}
if(result.length <= 0){
res.send({status : 200 });
}else{
res.send({status : 100 });
}
});
});
내가이 문제를 해결하는 데 도움이 바랍니다하고 바보 같은 소리하면 용서해주십시오.
여기서'$ or'를 사용하여 단일 쿼리를 실행할 수 있습니다. 그렇다면 체인 콜백에 대해 걱정할 필요가없고 ** 오버 헤드가 적고 빠릅니다. 또는 "중복 오류"가 반환되면 고유 속성 중 하나가 실제로 존재한다는 사실을 받아 들일 수 있으며 사용자에게 다시 시도하도록 요청할 수도 있습니다. –