Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Mongodb/Node.js中的自动计数日期/时间_Javascript_Node.js_Mongodb_Express_Mongoose - Fatal编程技术网

Javascript Mongodb/Node.js中的自动计数日期/时间

Javascript Mongodb/Node.js中的自动计数日期/时间,javascript,node.js,mongodb,express,mongoose,Javascript,Node.js,Mongodb,Express,Mongoose,我在我的nodejs/expressjs应用程序中使用mongoose与mongodb交互,下面是mongodb集合或模式之一,我在其中对文档或字段进行了提升,并将其设置为日期类型,每当用户在客户端提出请求时,它都会更新为当前日期,同样,我已将approvedon和rejectedon文档设置为Type Date,当有人批准或拒绝请求时,该日期也将更新为当前日期,我希望这三个字段自动计数或与这三个字段同步,这三个字段将在用户提出请求后开始计数天数和时间,批准或拒绝每个单独的时间,这是我想要的,因

我在我的nodejs/expressjs应用程序中使用mongoose与mongodb交互,下面是mongodb集合或模式之一,我在其中对文档或字段进行了提升,并将其设置为日期类型,每当用户在客户端提出请求时,它都会更新为当前日期,同样,我已将approvedon和rejectedon文档设置为Type Date,当有人批准或拒绝请求时,该日期也将更新为当前日期,我希望这三个字段自动计数或与这三个字段同步,这三个字段将在用户提出请求后开始计数天数和时间,批准或拒绝每个单独的时间,这是我想要的,因为在一段时间后,如果没有用户批准或拒绝,我必须自动发送电子邮件,或者在其他条件下,我尝试将提升的日期值转换为毫秒,并尝试添加以毫秒为单位的特定时间,比较这两个时间,并根据条件发送邮件,但是值返回为NaN,所以我无法理解如何实现逻辑,有人能帮我找到解决方案吗

 var mongoose = require('mongoose'),
 Schema = mongoose.Schema;
 var Requests = new Schema({
id: Schema.Types.ObjectId,
    request: String,
    description: String,
    approval: Boolean,
    rejection: Boolean,
    expired: Boolean,
    raisedon: {type: Date, default: Date.now},
    approvedon: {type: Date, default: Date.now},
    rejectedon: {type: Date, default: Date.now} 
  });

module.exports=mongoose.model'Requests',Requests

Date.now是一个函数,因此当您将其强制为数字时,它将变为NaN。只需将这些调用更改为Date。现在。

我们可以在从请求引发时间开始的一段时间后实现邮件发送逻辑,如下所示

var Requests = require('./process');
var escmail = require('./escalationmail');
var escalation = function () {

Requests.find('', function (err, data) {




    for (var i = 0; i < data.length; i++) {
        var raisd = data[i]['raisedon'];
        var time1 = raisd.setTime(raisd.getTime() + 7*24*60*60000);
        var time2 = new Date();
        var time3 = time2.setTime(time2.getTime());
        if (data[i]['expired'] == "0") {
            if (time3 > time2) {
                escmail.sendMails();

                Requests.findByIdAndUpdate(data[i]['_id'], {
                        expired: "1"
                    },
                    function (err) {



                        console.log("escalated emails have been sent");

                    })


            }

        }

    }
})
}


exports.escalation=升级

我改为Date.now,但仍然在console.log中,raisedon被记录为Tue Feb 11 2014 11:36:21,在更改之前也是sameDate。现在返回自历元以来的毫秒数。现在还不确定你在问什么……Mongoose docs示例使用Date。现在,我只希望在请求初始化日期起7天后,如果任何用户没有对该请求采取任何操作(如我正在开发的node.js应用程序中的批准或拒绝),邮件会自动发送给用户