簡體   English   中英

想訪問node.js/ejs中頁面之間的數據庫數據

[英]Want to access database data between pages in node.js / ejs

我的目標是在用戶登錄后在每個頁面中顯示登錄/會話用戶名和測驗點,並在測驗答案正確后提高用戶分數。

我在想的是我可以做一個簡單的基於 javascript 的測驗,然后最后更新 mongodb 數據庫中的分數。 但我對流程感到困惑,並且在計算 ejs 頁面中的分數(如 +、- )時發現困難。

所以,我的問題是:

  1. 請任何人都可以指導我完成簡單、整潔和干凈的流程/代碼。

  2. 這是我的 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) 也沒有顯示。

  1. 這是我的 index.js,我在其中將登錄的用戶數據呈現到 home.ejs 頁面。
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');
  1. 這是我的用戶 model。
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);
  1. 這是我在 mongodb 數據庫中的數據。
{"_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM