簡體   English   中英

Meteor:如何使用Momentjs在Mongodb中添加和查詢日期

[英]Meteor: How to add and query Dates in Mongodb with Momentjs

我想展示今天到期的所有物品。 一切都適用於我的夾具數據。 但是新添加的對象不會顯示出來。

夾具

...
var today = moment().toDate();

    Cards.insert({
        deckName: javascriptId,
        due: today,
        front: 'blaablaa',
        back: 'blaablaablaa'
    });
...

顯示對象

Template.showCards.helpers({
    cards: function () {
        var end = moment().toDate();

        return Cards.findOne({
            deckName: this._id,
            due: {"$lte": end}
        });
    }

添加新的截止日期以隱藏對象

    Template.showCards.events({
    ...
        'click #difficulty button': function(event) {
        var incBy = parseInt(event.target.value);
        console.log(incBy);
        console.log(typeof incBy);
        var today = moment();
        var newDue = moment(today).add(incBy,'days').toDate();
        Cards.update(
            this._id, {
                $set: {due: newDue}
                }
            );
    }
});

添加新對象

Template.addCards.events({
    'submit form': function (event, template) {
        event.preventDefault();
        var deckNameVar = event.target.deckName.value;
        var frontVar = event.target.front.value;
        var backVar = event.target.back.value;
        var today = moment().toDate();
        Cards.insert({
            deckName: deckNameVar,
            due: today,
            front: frontVar,
            back: backVar
        });
    }
});

新對象將正確添加到數據庫中,但由於某種原因它們不會顯示。

moment().toDate()返回一個Date對象,它指定一個確切的時刻(例如16:32:12的1/4/15)而不是一天的結束或開始。 存儲截止日期時請記住這一點。

每當你的卡助手運行時,它會找到確切的時刻,並檢查所有卡的到期時間。 添加新卡不會強制幫助程序重新運行,因為它們不符合條件。 換句話說,你的end不是反應性的,也不是特定的。

你可以通過使end成為當天的實際結束來解決這個問題:

var end = moment().endOf('day').toDate();

此外,您的助手使用的是findOne而不是find因此您只能獲得一張卡而不是所有與選擇器匹配的卡。 如果您只想查看最后更新的卡,請修改您的幫助,如下所示:

return Cards.findOne({deckName: this._id, due: {$lte: end}}, {sort: {due: -1}});

最后,您需要解決加入套牌和卡片的方式。 在你的燈具中你使用了一個id為deckName ,然后在你的提交中你使用了牌組的名稱,最后在你的cards助手中你正在通過id搜索。 選擇一種方式並堅持下去。 我建議調用field deckId並僅使用id(注意這需要修復你的提交以按名稱查找套牌然后使用相應的id)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM