javascript - Node js网站+ sql:插入/更新用户名(键)和表上的分数
问题描述
我正在开发一个包含 HTML、javascript、node js 和 MySQL 的测验网站。在第一页上,我保存了用户名 (savingName.html)。下一页是测验(quiz.html + quiz.js),其中积分累积,然后是我将结果保存在表格上的结果页面(results.html + results.js)。数据将保存在具有列名称(主键)、积分和获得积分的级别的表格中。
我已经尝试了很多方法:
首先将名称保存在桌子上。问题:当我尝试保存分数(在其他 javascript 页面上生成)时,它给出了一个错误,指出名称不能为空。
我做了一个测试,我合并了“savingName.html”和“results.html”,所有数据(名称、点数和级别信息)都成功保存在表上。但是,我无法在每次显示结果时都向用户询问姓名,因此我需要在不同的页面上询问姓名,然后保存与该姓名关联的分数。
问题:如何保存最先给出的用户名和之后生成的分数?
保存名称代码:
const addBtn = document.querySelector('#add-name-btn');
addBtn.onclick = function (){
const nameInput = document.querySelector('#name-input');
const name = nameInput.value;
nameInput.value = "";
}
<div class="container text-center rowExpNivel">
<div class="cartao mx-auto">
<div class="row">
<div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12 text-center meio">
<label for="nome_utilizador" class="pretoTi">Escreve aqui o teu nome:</label>
</div>
</div>
<div class="row">
<div class="col-11 col-sm-10 col-md-8 col-lg-8 col-xl-8 text-center meio mx-auto">
<form action="niveis.html" onclick="guardarNome()">
<br>
<label>Escreve aqui o seu nome:</label>
<input type="text" id="name-input">
<button id="add-name-btn">Add Name</button>
</form>
<br>
<p>* O nome introduzido vai ser utilizado para o certificado final </p>
</div>
</div>
</div>
<script src="savingName.js"></script>
保存分数javascript摘要代码:
var score = points;
var actualLevel = nivel;
var user = addBtn.name;
fetch('/pontos', {
headers: {
'Content-type': 'application/json'
},
method: 'POST',
body: JSON.stringify({user,score,actualLevel})
})
.then(response => response.json());
(app.js) 'app.js' 代码 (Node JS) 上的 Post 方法:
app.post('/pontos', (request, response) => {
const {user} = request.body;
const {score} = request.body;
const {actualLevel} = request.body;
const db = dbService.getDbServiceInstance();
const result = db.insertPoints(user,score,actualLevel);
result.then(data => response.json({success: true})).catch(err => console.log(err));
});
(databaseService.js) 对上一页“app.js”(Node JS)调用的函数的 SQL 查询:
async insertPoints(user,score,actualLevel) {
try{
const response = await new Promise((resolve, reject) => {
const query = "INSERT INTO quizData (user,score, actualLevel) VALUES (?,?,?) ON DUPLICATE KEY UPDATE name=VALUES(name),score = VALUES(score), actualLevel = VALUES(actualLevel);";
connection.query(query, [user,score,actualLevel] , (err, result) => {
if (err) reject(new Error(err.message));
resolve(result);
});
});
return response;
}catch (error){
console.log(error);
}
}
您能否举个例子来帮助我是否可以将这些数据成功保存在数据库中?我已经做了很多研究,但没有成功。
非常感谢!
解决方案
推荐阅读
- sql - 查询的工作原理
- nginx - Nginx 重定向和三级域
- javascript - 如何简化我的双循环 javascript
- kotlin - 使用kotlin中的索引映射Arraylist的ArrayList
- log4j2 - Log4j2 Regexfilter 似乎忽略了过滤器配置
- unity3d - 是否有可能让 RactiveProperty 在 UniRx 中公开获取私有集
- javascript - 如何在javascript中检查对象数组和另一个对象数组之间的空数组
- python - python str Text等于dict的名称
- java - Java项目,Spring/显示学生问题/错误的数据库实现,SQL
- tensorflow.js - tfjs-models handpose 可以返回多个预测吗?