[英]mongodb/mongoose findOneandUpdate how to get index and delete object
[英]How to get a specific object in mongoose with mongoDB?
所以我有这个问题,我想用我在 EJS 中创建的表单登录我的用户。 我遇到的问题是注册用户后我无法登录,因为我不知道如何操作。 注册记录已保存到 MongoDB,所以这应该不是问题这是我想要做的:
这是我的文件夹结构图像
路由/login.js 文件
// routes/login.js
const express = require('express');
const router = express.Router();
const mongoose = require('mongoose');
const User = require('../models/user');
router.get('/', (req, res) => {
res.render('pages/login');
});
router.post('/', (req, res, next) => {
const email = User.find({})
const pass = User.find({password: req.body.password});
if (pass != req.body.password) {
res.json({
ERROR: "Password Is Not Correct"
});
}else {
user.findOne(email)
.exec()
.then(doc => res.send(doc).json({
DETAILS: "Logged in as " + `${User.name}`
}))
.catch(err => {console.log(err); res.send("Error")})
}
})
module.exports = router;
型号/user.js model
const mongoose = require('mongoose');
const userSchema = mongoose.Schema ({
_id: mongoose.Schema.Types.ObjectId,
name: String,
email: String,
password: String
})
module.exports = mongoose.model('Account', userSchema);
和views/partials/regform.ejs文件
<form action="/login/" method="POST">
<div class="form-group">
<label for="email">Email address</label>
<input type="email" required class="form-control" id="email" name="email" aria-describedby="email">
</div>
<div class="form-group">
<label for="Password">Password</label>
<input type="password" required class="form-control" name="password" id="password">
</div>
<input type="submit" class="btn btn-primary" value="Submit"/>
</form>
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js" integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" crossorigin="anonymous"></script>
感谢您花时间阅读这个问题。
我的问题的解决方案如下。
//login.js
const express = require('express');
const router = express.Router();
const mongoose = require('mongoose');
const User = require('../models/user');
router.get('/', (req, res) => {
res.render('pages/login');
});
router.post('/', async (req, res) => {
let user;
try {
user = await User.findOne({email: req.body.email, password:req.body.password})
} catch (e) {
console.error(e)
}
if(user) {
res.status(200).json({LOGGED_IN_AS: user});
} else {
res.status(404).json({error: "Some error message"});
}
})
module.exports = router;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.