Node.js 检查日期过期的Cron作业
让我们以下面的例子为例: 我有两个名为Node.js 检查日期过期的Cron作业,node.js,mongodb,cron,Node.js,Mongodb,Cron,让我们以下面的例子为例: 我有两个名为user和产品的mongoDb集合。用户可以添加无限的产品,但每个产品在5天内到期,到期时必须从数据库中动态删除 user.js const UserSchema = mongoose.Schema( { username: { type: String }, email: { type: String }, timezone: { type: String }, products: [{ type: Schema.Typ
user
和产品的mongoDb
集合。用户可以添加无限的产品,但每个产品在5天内到期,到期时必须从数据库中动态删除
user.js
const UserSchema = mongoose.Schema(
{
username: { type: String },
email: { type: String },
timezone: { type: String },
products: [{ type: Schema.Types.ObjectId, ref: 'Products' }]
}
)
export default mongoose.model('User', UserSchema);
products.js
var RunSchema = mongoose.Schema(
{
name: { type: String },
completedAt: { type: Date }
}
)
export default mongoose.model('Run', RunSchema);
在nodejs中是否有其他方法可以做到这一点,而不是每天运行一个cron作业
,检查产品
集合中的所有文档
我正在考虑一个解决方案,其中每个用户都可以有一个cron作业,一旦他们添加了一个产品就可以开始…第一种方法:
您可以在NodeJs中添加一个cron,它将每x一次执行您的任务
例如:
将包添加到项目中
npm i cron -S
创建cron.js文件
'use strict';
let express = require('express'),
CronJob = require('cron').CronJob,
moment = require('moment'),
mongoose = require('mongoose');
Collection = mongoose.model('Collection');
var collection = {
clean : function() {
// Each hour
new CronJob('0 * * * *', function() {
console.log("Hello I'm Cron!");
// Delete all the product expired of your db
// Your code ...
}, null, true, 'Europe/Paris');
}
}
module.exports = {
init : function() {
return (
collection.clean()
)
}
}
在server.js中,添加以下代码来初始化cron
/**
* Init cron tasks
*/
var cron = require('./cron');
cron.init()
第二种方法:
在您的模型中设置到期时间,请检查以获取更多信息。回答问题为时已晚,尽管我希望提供具有最小操作和无Cron作业的替代操作
如果您希望在创建5天的间隔后删除产品文档,那么您可以在模型本身中使用2行代码来实现。
您已经在模型中添加了一个属性,即(expireAt),并在矩npm库的帮助下将间隔传递给该属性
var RunSchema = mongoose.Schema(
{
name: { type: String },
completedAt: { type: Date },
expireAt: {
type: Date,
default: moment(new Date()).add("5", "days"),
expires: 432000000
}
}
)
export default mongoose.model('Run', RunSchema);
创建产品文档日期和时间后。它将每隔5天自动从集合中删除文档。第二种方法似乎正是我所需要的,但当产品过期时,我还必须从用户
集合中删除其引用。。。你知道我该如何使用这种方法吗?在答案链接中,你有一个答案的开头,修改你的两个模型,并添加额外的检查或执行。