我正在尝试使用 node-cron 使用 mongoose 更新多个文档。我想要完成的是所有创建的文档,比如说,7 月 1 日,在 30 天后将处于非活动状态。
我设法使用下面的代码更新多个文档,但我不知道如何使用日期小于当前日期的产品更新多个文档:
我知道如何获取小于当前使用日期的产品列表,但我不知道如何将此逻辑应用于下面的代码 -
let currentDate = new Date();
let query = Product.find({ dateCreated: {$lt: currentDate}});
代码与我想要完成的事情无关。这是一个示例代码,它将每 10 秒更新多个文档。
const mongoose = require('mongoose');
const Product = require('../model/product');
const cron = require('node-cron');
cron.schedule('*/10 * * * * *', function(){
let productArray = ['Bacon', 'Apple', 'Fork', 'Beans'];
productArray.map(product => updateProduct(product));
});
let updateProduct = (name) => {
let randomNumber = Math.floor(Math.random() * (999 - 1 + 1));
let query = Product.findOne({name: name}).select({ 'name': 1 });
query.exec((err, product) => {
if(err) throw err;
if(product){
product.description = `Random description generate every 10 seconds: ${randomNumber}`;
product.save(err =>{
if(err) throw err;
console.log(`Successfully updated random description for: ${product.name}\n ${product.description}\n`);
});
}
});
};
产品架构
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const productSchema = mongoose.Schema({
name : String,
description : String,
status : String,
dateCreated : { type: Date, default: Date.now }, //
});
module.exports = mongoose.model( 'Product', productSchema );
这是我知道在猫鼬中更新多个文档的唯一方法。那么有没有其他方法可以在使用 mongoose 和 node-cron 创建 30 天后更新 mongoose 中的多个文档?如果我的问题令人困惑,请原谅我。