gpt4 book ai didi

javascript - 如何将页面加载后计算出的数据发送到 MongoDB?

转载 作者:行者123 更新时间:2023-12-03 06:07:45 24 4
gpt4 key购买 nike

我将 Node.js 与 Express 和 MongoDB 结合使用。

我有一个页面'/score',它根据上一页上的测验计算用户的分数。 '/score' 路线如下:

app.get('/score', stormpath.getUser, function(req, res) {
var quiz = req.session.mostRecentQuiz;
db.collection('quizzes').find(quiz).toArray(function (err, docs) {
assert.equal(err, null);
var quiz;
docs.forEach(function (doc) {
quiz = doc.quiz;
});
res.render('score', {quiz: quiz});
});
db.collection('users').update({user: req.user.username}, { $set: {"mostRecentQuiz": quiz } }, function (err, result) {
if (err) throw err;
console.log(result);
} );
});

从数据库获取测验答案后,我在/score 页面上使用一些客户端 JavaScript 来计算用户的分数,然后将其报告给用户。但是,我希望我的 MongoDB 也能获得相同的分数,但我不确定如何最好地实现这一目标。

我可以使用 AJAX 来完成此操作,还是重定向到新页面会更好?

最佳答案

如果您已经在使用 Express,最简单的方法是定义更新分数的路线。然后就可以通过AJAX将数据发送到服务器了。为了解析请求参数,请安装 body-parser 模块。

服务器:

var bodyParser = require('body-parser')
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());

app.put('/score', stormpath.getUser, function (req, res) {
console.log(req.body); // there should be your received data

// save it to the database
db.collection('yourcollection').updateOne(
{}, // your query for updating the data in the wished field
function(err, results) {
if(err) { return res.json(err); };
return res.json(results);
});
});

客户端 - 如果您使用 jQuery:

$.ajax({
url: '/score',
type: 'PUT',
contentType: 'application/json',
data: {'score':1000}, // put here your data to send it to the server
success: function(data){
console.log(data);
}
});

一些文档:

MongoDB 更新:https://docs.mongodb.com/getting-started/node/update/

jQuery AJAX:https://api.jquery.com/jquery.ajax/

关于javascript - 如何将页面加载后计算出的数据发送到 MongoDB?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39459184/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com