#node.js #mongodb #qr-code
Вопрос:
Я пытаюсь создать приложение, которое в основном будет отображать QR-код человека, зарегистрированного в нашей базе данных, после того, как он/она войдет в свою учетную запись. Я могу преобразовать одно поле в QR-код, но я хочу преобразовать все элементы данных этого конкретного пользователя. Нужна помощь.
mongoose.connect(DB, {
useNewUrlParser: true,
useUnifiedTopology: true,
useCreateIndex: true,
useFindAndModify: false
}).then(()=>{
console.log("connected to mongoDb Atlas");
}).catch((error)=>
console.log("no connection"));
//Schema
var userSchema = {
email: String,
password: String,
name: String,
}
var User = mongoose.model("User", userSchema);
const { check, validationResult} = require("express-validator");
app.use("/styles",express.static("styles"));
app.use(bodyParser.urlencoded({extended: true}));
app.use(express.static("public"));
app.set("view engine","ejs");
//Navigation
app.get("/",function(req,res){
res.render("index")
});
app.get("/login",function(req,res){
res.render("login")
})
app.get("/register", function(req, res){
res.render("register")
})
app.post("/", function(req, res){
bcrypt.hash(req.body.password, saltRounds, function(err, hash){
let newUser = new User({
email:req.body.email,
password:hash,
name:req.body.name,
});
newUser.save();
res.redirect("/");
})
})
app.post("/login", function(req, res){
const email = req.body.email;
const password = req.body.password;
const name = req.body.name;
User.findOne({email:email}, function(err, foundUser){
if (err){
res.send("Invalid login details");
}else{
if (foundUser){
bcrypt.compare(password, foundUser.password, function(err, result){
if (result === true){
const url = req.body.email;
if (url.length === 0) res.send("Empty Data!");
qr.toDataURL(url,(err, src) => {
if (err) res.send("Error occured");
res.render("scan", { src });
});
}else{
res.send("Invalid login details! Try again.");
}
});
}
}
});
})
app.listen(3000, function(){
console.log("Server started at port 3000");
})
С помощью приведенного выше кода я могу получить QR-код только одного поля, т. е. либо req.body.email, либо req.body.name Но я хочу, чтобы QR-код обоих полей был зарегистрирован в моей базе данных MongoDB и вместе с уникальным идентификатором.
сканировать файл.ejs
<%- include("./partials/header") %>
<body>
<div class="container">
<br>
<h1 class="text-center">Scan Me!</h1>
<hr>
<div class="row mb-3">
<div class="card" style="width: 18rem;">
<img class="card-img-top" src=<%=src%> alt="QR Code Image">
<div class="card-body">
<p class="card-text">Scan the QR Code to access data!</p>
</div>
</div>
</div>
</body>
<%- include("./partials/footer") %>
Комментарии:
1. Пожалуйста, уточните, в чем вам нужна помощь. Вы. нужна помощь в запросе данных или вам нужна помощь в создании QR-кода?
2. @barrypicker Я могу сделать qr-код только одного элемента пользователя. Но мне нужен qr-код всех его данных, таких как адрес электронной почты,имя, номер телефона и т. Д.
3. доступны ли такие данные, как электронная почта, имя, телефон, в теле вашего запроса (т. е. в теле запроса)? Пожалуйста, включите модель данных, которую вы используете, чтобы можно было сделать предположения. Кроме того, было бы полезно, если бы вы включили достаточное количество кода, чтобы кто-то (например, я) мог просто запустить код для проверки идей, прежде чем давать рекомендации.
4. barrypicker Пожалуйста, взгляните на код еще раз.
Ответ №1:
Вот вам и ответ.
const url = foundUser.toString();
if (url.length === 0) res.send("Empty Data!");
qr.toDataURL(url,(err, src) => {
if (err) res.send("Error occurred");
res.render("scan", { src });
});