Javascript Mongoose在一定时间后从数据库中删除数据
1小时后,我需要删除购物车下数组中的项目 我做了一些研究,但我的尝试对我没有效果Javascript Mongoose在一定时间后从数据库中删除数据,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,1小时后,我需要删除购物车下数组中的项目 我做了一些研究,但我的尝试对我没有效果 constuserschema=mongoose.Schema({ 电邮:{ 类型:字符串, 验证:[isEmail,'Geçersiz mail address!'], }, 密码:{ 类型:字符串, 必填项:true }, resetToken:String, 有效期:日期, 伊萨明:{ 类型:布尔型, 默认值:false }, 购物车:{ 项目:[{ productId:{ 类型:mongoose.Sche
constuserschema=mongoose.Schema({
电邮:{
类型:字符串,
验证:[isEmail,'Geçersiz mail address!'],
},
密码:{
类型:字符串,
必填项:true
},
resetToken:String,
有效期:日期,
伊萨明:{
类型:布尔型,
默认值:false
},
购物车:{
项目:[{
productId:{
类型:mongoose.Schema.Types.ObjectId,
参考:“产品”,
必填项:true
},
数量:{
类型:数字,
必填项:true
}
}]
}
});代码>我不确定是否还有其他选项,但您可以使用类似的方法,以一定的间隔运行并清理购物车阵列
要使其工作,您需要在DB中有一个额外的字段,它表示到期时间,即(购物车创建时间+1小时)。此节点计划功能将在字段值中检查过期时间,如果该值大于当前时间,则将删除,否则将保持原样。要更新必须自动更新的部分数据。我确信您不会删除用户详细信息,只想用[]
或null
更新购物车
数据
为此,您可以在node.js上使用cron作业,该作业每小时触发一次,但它将在指定时间删除所有文档,这可能会导致用户在cron作业运行前1分钟在购物车中添加内容时出现意外行为
但是,您可以进行查询以检查特定购物车是否过期,并且可以使用cron作业运行该购物车,但我认为,为此,您需要解析每个文档,这可能会增加复杂性和数据库不必要的负担
因此,我建议您创建另一个集合,该集合保存用户购物车信息,并为密钥createdAt
(您可以随意命名)向集合添加“ttl”,这是由Mongodb
提供的,它将在特定文档的特定时间过后删除该文档
创建购物车特定集合的索引
db.collectionName.createIndex( { "createdAt": 1 }, { expireAfterSeconds: 3600 } )
插入文档时:
db.log_events.insert( {
"createdAt": new Date(),
"logEvent": 2,
"logMessage": "Success!"
} )
为了彻底理解它,我建议你阅读。试试看
为手推车保留一个单独的收藏会有所帮助。这对我来说真的很有用,谢谢。谢谢,如果可行的话,你也可以升级它。