检查在mongodb中创建objectid所花费的时间

时间:2014-09-07 09:16:47

标签: javascript node.js mongodb express

我正在构建一个允许用户重置密码的应用。 这个过程非常简单。用户输入他的电子邮件地址,并向他发送一个链接,其中包含已创建的新对象的编号。 例如 - > /复位密码?X = 55555444475d41a000001。 点击链接后,他到达其他页面,然后我想检查从他获得链接后是否已经过了24小时?是的,我知道有一个名为" getTimestamp"但如何使用它??

get: function (request, response) {

  ???????

},

2 个答案:

答案 0 :(得分:0)

您可以设置" creation_date"创建对象时的属性,如下所示:

obj = {
    id: "xxxxxx...",
    creation_date: new Date()
    ...
}

然后将对象存储在服务器的某个位置,然后当用户打开带有对象id的链接时,您将执行类似这样的操作,以检查对象是否已在24小时前创建:

var now = new Date();

if (now - obj.creation_date > 86400000) {
    // more than 24h (86400000ms = 24h)
    // do something
}

答案 1 :(得分:0)

实际上 reading the JavaScript API docs for ObjectId可能会有所帮助。

由于对象的创建应该像

一样简单,因此检查已经过了24小时
var now = new Date();

/* Subtract the milliseconds a day lasts from the current time.
 * If the timestamp of the ID converted to msecs after epoch is smaller
 * the ObjectId was created before that.
 */
if ( myId.getTimestamp() < ( now.getTime() - 86400000 ) {
  console.log("24 h have passed since creation");
}
else {
  console.log("24 h haven't passed since creation");
  var passed = new Date( now - myId.getTimestamp() );
  console.log(passed.getUTCHours()+":"+passed.getUTCMinutes()+" have passed.");
}

注意:我赞成你的问题,因为它可以通过Google搜索“MongoDB ObjectId getTimestamp JavaScript api”轻松解决,你没有表现出任何自己处理问题的迹象,也没有费心去问具体问题。我可以礼貌地建议阅读ESR的How To Ask Questions The Smart Way,尤其是chapter about StackOverflow吗?