2016-05-12 88 views
0

我目前正在嘗試基於兩個參數來過濾流星集合:currentDate和來自集合dateEventEnds。流星 - 過濾器收集項目發佈日期

這是我目前發佈代碼:

Meteor.publish('recursos', function() { 
    let today = Date.now(); 
    return Recursos.find({ 'recursos.fechaEnd': { $gt: today }}); 
}); 

這是有效的沒有做任何事情。我認爲這是由於:

  • Date.now()產生的日期以毫秒爲單位。例如:1463058648464
  • 雖然recursos.fechaEnd有它存儲這樣的: 「2016-04-30T00:00:00.000Z」

也曾嘗試使用新的日期(),但仍然沒有任何反應:

Meteor.publish('recursos', function() { 
    let today = new Date(); 
    return Recursos.find({ 'recursos.fechaEnd': { $gt: today }}); 
}); 
  • 新的Date()的結果是這樣的:星期四2016年5月12日9點50分十六秒GMT-0400(東部夏令時間)

所以看起來這個問題圍繞ARO以及日期的呈現方式。我怎麼能改變他們使用相同的日期格式?是通過將它們更改爲毫秒?

,我需要做的過濾是suscribe的收集和EasySearchIndex它看起來像這樣兩個模板:

RecursosIndex = new EasySearch.Index({ 
    collection: Recursos, 
    fields: ['clase', 'direccion.city'], 
    engine: new EasySearch.MongoDB({ 
     sort:() => ['fechaStart'] 
    }) 
}); 

應該過濾發生在這裏?

感謝

+0

只是猜測:'let today = new Date();'? – Julien

+0

已經嘗試過,使用Date.now()生成當前日期。 – smeloa

+0

@Julien看起來像問題必須做更多的日期值如何存儲/表示 – smeloa

回答

1

你的邏輯是完全正常的,蒙戈是很能夠搜索和按日期排序字段的。問題是你在Mongo中的日期是作爲字符串存儲的,而不是實際的日期。如果你看一個對象,你應該可以看到字段:

真正的約會:

"createdAt" : ISODate("2015-09-18T05:42:50.105Z") 

的字符串:

"createdAt" : "2015-09-18T05:42:50.105Z" 

升級現有的數據集從字符串到日期,運行以下內容:

Recursos.find().forEach(function(r){ 
    Recursos.update(r._id,{$set: { 'recursos.fechaEnd': new Date(r.fechaEnd) }}); 
}); 

當然你可以將mo一次只有一個日期,我懷疑你的對象也有fechaStart

+0

感謝您的幫助。看起來我正在查看MeteorToys的相關信息,但Robomongo確實正確顯示了它。真正的問題在於模板被鏈接到EasySearch並需要過濾器...... – smeloa