[英]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.