[英]Want to access database data between pages in node.js / ejs
我的目标是在用户登录后在每个页面中显示登录/会话用户名和测验点,并在测验答案正确后提高用户分数。
我在想的是我可以做一个简单的基于 javascript 的测验,然后最后更新 mongodb 数据库中的分数。 但我对流程感到困惑,并且在计算 ejs 页面中的分数(如 +、- )时发现困难。
所以,我的问题是:
请任何人都可以指导我完成简单、整洁和干净的流程/代码。
这是我的 home.ejs,我需要在其中显示登录的用户名和分数(在 mongodb 中输入的第一个 0)
<%- include("./partials/header") %>
<script>
console.log("hello");
console.log(user.score);
</script>
<div class="container mt-5">
<a href="/logout" class="btn btn-danger">Logout</a>
<h2>Welcome <%= user.username %> </h2>
<div style="align-items: right;">
Total Points :<%= user.score %>
</div>
</div>
<%- include("./partials/footer") %>
// 这里我得到 NAN,console.log(score) 也没有显示。
app
.get("/home", authenticateUser, (req, res) => {
res.render("home", { user: req.session.user });
});
app
.post("/login", async (req, res) => {
const { username, password } = req.body;
req.session.user = {
username,
};
res.redirect('/home');
const mongoose = require("mongoose");
mongoose.connect("mongodb://localhost:27017/user");
const UserSchemas = new mongoose.Schema({
username: {
type: String,
required: true,
},
password: {
type: String,
required: true,
},
score: {
type: Number,
required: true,
},
});
module.exports = new mongoose.model("Users", UserSchemas);
{"_id :{"$oid":"5ff33d071dc86a122cd52969"},
"username":"abc",
"password":"$2b$12$/EG.kUTw69Llt0bNkorJkeOrPWq3AkrJzmNlrzr3qlBPDDhwxqib6",
"score":0,
"__v":0}
摘要:我的目标是根据测验分数更新登录用户的分数。 就是这样,没什么。 目前,我可以在所有页面上登录用户名,但不能得分,console.log(score) 也没有工作,我还需要根据测验性能加/减。
一个简单,容易,需要代码/黑客或帮助会很好。
谢谢 !
当您尝试在 ejs 中记录 score 时,您会得到 null,因为您正在尝试访问用户的 score 属性
Total Points :<%= user.score %>
但是当他/她登录时,您永远不会在您的 app.js 中设置用户的分数
app.post("/login", async (req, res) => {
const { username, password } = req.body;
req.session.user = {
username,
};
res.redirect('/home');
}
因此,当您设置 req.session.user 的用户名属性时,您还应该同时设置 score 属性
像这样
app.post("/login", async (req, res) => {
const { username, password } = req.body;
req.session.user = {
username:username,
score:0,
};
res.redirect('/home');
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.