繁体   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