2016-05-12 1 views
0

現在、私は、currentDateとdateEventEndsコレクションの2つのパラメータに基づいて流星コレクションをフィルタリングしようとしています。メテオ - 日付で公表されたコレクションコレクションアイテム

これは私の現在の公開コードです:効果的に何もしていません

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()の結果は、このようなものです:問題はAROを公転しのような木2016年5月12日9時50分16秒GMT-0400(東部夏時間)

だからそれが見えますそして、日付の表示方法。どのようにして同じ日付形式を使用するように変更できますか?ミリ秒に変更していますか?

私はフィルタリングを行う必要があるテンプレートは次のようになりますコレクションとEasySearchIndexの両方にsuscribeです:

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一度に1つの日付よりも、私はあなたのオブジェクトもfechaStartがあると思う。

+0

ご協力ありがとうございます。私はMeteorToysの情報を見ていたようですが、Robomongoは正しく表示しています。実際の問題は、テンプレートがEasySearchにリンクされており、そこにフィルタが必要であることにあります。 – smeloa

関連する問題