我对Web开发非常陌生,我想学习新事物。我有一个猫鼬模式(我不会发布它,因为它使用的是我自己的语言,您不会理解,所以我会解释)。
因此,我拥有诸如名称,代码,用户创建条目的内容等之类的东西(与我的问题无关)。
我有一个变量,例如,日期:type:Date, default: Date.now
。还有另一个deactivated: {type: Boolean, default: false}
。
我希望对于每个条目,在4周后传递停用的变量以将其更改为true。
我不知道该怎么做。我什么也没尝试,我在Google上进行了搜索,但找不到任何东西。
我希望您给我一个主意,让我理解我该怎么做,然后我将尝试自己构建它。
答案 0 :(得分:1)
由于猫鼬没有活跃的“工作”,因此您不能在4周内更改该值。
您可以(并且应该做)是创建一个后查找挂钩(只需阅读文档)。这使您能够编写每次find
查询找到架构文件并在代码返回调用函数之前执行的代码。
这样,它将像这样运行:
-您使用最新日期创建一个用户
-大约5周后,用户再次登录
-为了访问用户文档,猫鼬需要对该文档进行查找查询
-当查找查询找到用户时,将执行您的自定义钩子代码
-在挂钩代码中检查日期是否超过4周
-如果还不到4周,那么您什么也不做
-如果已存在4周或更长时间,则将deactivated
更改为true,保存文档并返回保存的文档(或检索到的第一个文档)。
请阅读有关猫鼬中的“钩子”的信息,这肯定会对您有所帮助:)
答案 1 :(得分:1)
您要问的基本上无法完成,就像您有两种方法走这条路一样。
pre('find')
,它将检查是否已经过去了4周,然后将停用状态更改为true
,则可以了解有关{ {3}} 类似于本示例的示例-本示例摘自here
Schema.pre('find', function() {
if (!this.getQuery().userId) {
this.error(new Error('Not allowed to query without setting userId'));
}
});
deactivated
设置为true
这是一个很好的cron程序包here
编辑:cron作业可以是任何时间段,每10分钟,1小时,2、100等...
祝你好运