通过数据库和表格中的参数比较模型
Comparison of models by parameters from the database and form
我遇到过这样的问题。在客户端,用户填写注册表,我在后端接受它(格式为json)。接下来,我需要做一个比较。如果通过email参数的文档已经存在于数据库中,则发送错误;如果不存在带有此类电子邮件的此类文档,则在数据库中创建一个新文档。
将有一块我的路线负责这些动作
router.post('/register', checkNotAuthenticated, async (req, res) => {
try {
//Block for passport session
const hashedPassword = await bcrypt.hash(req.body.password, 10)
const username = users.push({
id: Date.now().toString(),
name: req.body.name,
email: req.body.email,
password: hashedPassword
})
//End of block for passport session
const candidate = await User.findOne(username.email)
if(candidate) {
console.log('User have been already registered!')
console.log(candidate)
} else {
const participant = new User({
name: req.body.name,
email: req.body.email,
password: hashedPassword
})
await participant.save()
}
res.redirect('/login')
} catch(e) {
res.redirect('/register')
console.log(e);
}
如果我的用户集合为空,则会创建一个新文档(例如:
{ inst: null,
vk: null,
_id: 5e10b72626f9107d861621c0,
name: 'Ivan',
email: 'w@w',
password:
'b$/2dDrTMCOXSZnaIgOgFEBuNKuU8mbRFKyV9.4U6brERsLpOVJoBAS',
__v: 0 }
),但如果至少存在一个文档,则不允许我创建用户(User have been already registered!
)。显然他一般检查是否存在带有电子邮件参数的文档,但我不知道如何找到带有电子邮件参数的确切文档,该文档是在客户端的表单上输入用户的(const candidate = await User.findOne(username.email
/* 如何正确引用用户驱动到表单中的这个参数?*/))
User.findOne({'email':username.email})
我遇到过这样的问题。在客户端,用户填写注册表,我在后端接受它(格式为json)。接下来,我需要做一个比较。如果通过email参数的文档已经存在于数据库中,则发送错误;如果不存在带有此类电子邮件的此类文档,则在数据库中创建一个新文档。
将有一块我的路线负责这些动作
router.post('/register', checkNotAuthenticated, async (req, res) => {
try {
//Block for passport session
const hashedPassword = await bcrypt.hash(req.body.password, 10)
const username = users.push({
id: Date.now().toString(),
name: req.body.name,
email: req.body.email,
password: hashedPassword
})
//End of block for passport session
const candidate = await User.findOne(username.email)
if(candidate) {
console.log('User have been already registered!')
console.log(candidate)
} else {
const participant = new User({
name: req.body.name,
email: req.body.email,
password: hashedPassword
})
await participant.save()
}
res.redirect('/login')
} catch(e) {
res.redirect('/register')
console.log(e);
}
如果我的用户集合为空,则会创建一个新文档(例如:
{ inst: null,
vk: null,
_id: 5e10b72626f9107d861621c0,
name: 'Ivan',
email: 'w@w',
password:
'b$/2dDrTMCOXSZnaIgOgFEBuNKuU8mbRFKyV9.4U6brERsLpOVJoBAS',
__v: 0 }
),但如果至少存在一个文档,则不允许我创建用户(User have been already registered!
)。显然他一般检查是否存在带有电子邮件参数的文档,但我不知道如何找到带有电子邮件参数的确切文档,该文档是在客户端的表单上输入用户的(const candidate = await User.findOne(username.email
/* 如何正确引用用户驱动到表单中的这个参数?*/))
User.findOne({'email':username.email})