![](/img/trans.png)
[英]how to insert data into database using MEAN stack (MySQL, Express, Angular, Node)
[英]How to get the server time in the MEAN stack ? (MongoDB, Express, Angular, Node)
代码:
exports.create = function (req, res) {
var article = new Article(req.body);
article.user = req.user;
console.log("1) LAST: "+article.user.last.getTime());
console.log("Date.now() "+Date.now());
if (article.user.last != null && article.user.last != undefined) {
console.log("1");
console.log("DATE: "+(Date.now() - article.user.last));
if ((Date.now() - article.user.last.getTime() > 1000 * 60 * 60)) {
article.save(function (err) {
if (err) {
return res.status(422).send({
message: errorHandler.getErrorMessage(err)
});
} else {
res.json(article);
if (article.user) {
article.user.last = Date.now();
console.log("2) LAST: "+article.user.last.getTime());
} else {
res.status(401).send({
message: 'User is not signed in'
});
}
}
});
}
else {
return res.status(422).send({
message: "You need to wait 1 hour between Article creations or if you just created an account."
});
}
}
else {
console.log("2");
article.save(function (err) {
if (err) {
return res.status(422).send({
message: errorHandler.getErrorMessage(err)
});
} else {
res.json(article);
if (article.user) {
article.user.last = Date.now();
console.log("3) LAST: "+article.user.last.getTime());
} else {
res.status(401).send({
message: 'User is not signed in'
});
}
}
});
}
};
情况:
我想使用服务器时间而不是使用Date.now()
。
我的反垃圾邮件计时器阻止用户每小时发帖超过一次。
它工作正常,除了一件事:如果我使用 Date.now(),我可以通过简单地将本地时钟提前 1 小时来绕过计时器。
当您在本地进行测试时 - 您的机器是服务器 - 所以您将本地机器提前 1 小时的测试并不是真正有效的测试,因为它也将服务器时间提前了一个小时。
Date.now()
是获取时间的正确方法,顺便说一句。 我还想说的是,当您处理这样的时间时,请记住使用 UTC。
使用 $currentDate
请参阅此处的文档: https : //docs.mongodb.com/manual/reference/operator/update/currentDate/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.