Node.js MongoDB模式计划发布

Node.js MongoDB模式计划发布,node.js,mongoose,mongoose-schema,Node.js,Mongoose,Mongoose Schema,我想每10分钟对API获得的数据执行一次发布后例程 cron和其他人的例行程序运行得很好,但当我试图获得第一篇日期接近到期的文章时,问题就出现了,因为这篇文章没有发表,或者没有尽可能少地发表 我试图创建一个包含已发布时间的增量字段,更新发布日期等;但我不能给出公式,我总是返回相同的结果,相同的文章 模式 "_id": item.ID, "title": item.title, "images": [ item.firstImage ], "url": "none", "expired": "20

我想每10分钟对API获得的数据执行一次发布后例程

cron和其他人的例行程序运行得很好,但当我试图获得第一篇日期接近到期的文章时,问题就出现了,因为这篇文章没有发表,或者没有尽可能少地发表

我试图创建一个包含已发布时间的增量字段,更新发布日期等;但我不能给出公式,我总是返回相同的结果,相同的文章

模式

"_id": item.ID,
"title": item.title,
"images": [ item.firstImage ],
"url": "none",
"expired": "2017-04-30T22:00:00+03:00",
"lastPublish": "2017-04-30T20:41:02+03:00",
"publish": 0
代码

我需要做一个循环队列,发布那些提前到期的(它们的日期有小时和天数的差异),当它结束时,重新开始。但我总是发表第一篇文章,我的想法都快用完了

我最好离开几个小时,等我头脑清醒后再重新开始


谢谢

解决了!运行下面的例程可以正常工作,我不知道昨天为什么不工作,除了选择数组([0])元素时缺少的一个例程

谢谢

db.find({}).sort({ 'expired': 1, 'lastPublish': 1 }).limit(1).exec(function(err, doc) {
//db.find({}).sort({ 'publish': 1, 'expired': 1 }).limit(1).exec(function(err, doc) {

    db.update({ '_id': doc._id }, { '$set': { 'lastPublish': new Date(), '$inc': { 'publish': 1 } })

});
db.find({}).sort({ 'publish': 1, 'expired': 1 }).limit(1).exec(function(err, doc) {

    db.update({ '_id': doc[0]._id }, { '$inc': { 'publish': 1 }, '$set': { 'lastPublish': new Date() } });