Node.js 使用时刻表检查24小时后的时差

Node.js 使用时刻表检查24小时后的时差,node.js,mongoose,momentjs,Node.js,Mongoose,Momentjs,我的目标是建立一个类似snapchat的功能,24小时后我发布的内容将被删除。我想创建一个API,它将检查当前时间是否超过24小时,如果超过,它将删除它,它将检查创建的时间和当前时间,并将比较这两个时间 我使用moment将日期/时间存储到数据库中。假设我的数据库代码如下所示 var mongoose = require('mongoose'); var moment = require('moment'); var ItemPost = new Schema({ name: Strin

我的目标是建立一个类似snapchat的功能,24小时后我发布的内容将被删除。我想创建一个API,它将检查当前时间是否超过24小时,如果超过,它将删除它,它将检查创建的时间和当前时间,并将比较这两个时间

我使用moment将日期/时间存储到数据库中。假设我的数据库代码如下所示

var mongoose = require('mongoose');
var moment = require('moment');

var ItemPost = new Schema({
   name: String,
   created: { type: Date, default: moment() },
   timeLeft: { type: Number, default: 24 },
});
例如,如果我现在发布内容

11:31 PM 8 Jan 2017
假设现在是上述时间。假设9个小时过去了,现在的时间是

08:31 PM 9 Jan 2017
我如何从创建日期24小时内获得时间差

我的尝试

function checkTime(item) {
  var currentTime = moment();
  // assume item is an ItemPost object from the database
  var timeStore = item.created()

  // Im stuck here, I tried various codes. But nothing has worked so Far.
  return data;

}
我想要的结果是

console.log(checkTime(item)); // 1 or 1 hour
我接近目标的真正尝试是

function test0() {

  var currentTime = moment();
  var timeStored = moment().subtract(7, 'hours');

  var hoursMinus = timeStored.fromNow(currentTime);
  console.log(hoursMinus); // 7 hours - it is a string

  timeDiff = hoursMinus.substr(0, hoursMinus.indexOf(' ')); // will get just 7

  var timeLeft = 24; // Default data from database

  console.log(timeLeft - parseInt(timeDiff));
}
如果我减去7

var timeStored = moment().subtract(7, 'hours');
但如果时间大于或等于23,它将不起作用

var timeStored = moment().subtract(23, 'hours');
var hoursMinus = timeStored.fromNow(currentTime);
console.log(hoursMinus); // Will return "a day"
hoursMinus将返回
a day
作为对我的算法不利的值

我的目标是返回一个数据,该数据表示从原始创建日期起,剩余
1小时
7小时
。任何帮助都将不胜感激。

您可以使用矩量法

下面是一个工作示例:

功能检查时间(项目){
var currentTime=力矩();
var timeStore=时刻(item.created);
返回currentTime.diff(时间存储器'h');
}
//表示5小时前的日期对象示例
var item={created:moment().subtract(5,'h').toDate()};
var res=检查时间(项目);
console.log(res);//5

谢谢您的回答,我会立即尝试。@sinus如果一切正常,请告诉我,如果答案解决了您的问题,请不要忘记接受答案。