从Meteor Collection for CountdownTimer获取数据

时间:2015-12-15 21:59:19

标签: mongodb meteor collections

我想将CountdownTimer设置为用户选择的特定日期。我在流星集合中保存了日期

Template.addDate.events({
    'submit form':function(event){
         var closeDate = $('[name="date"]').val();
     Date.insert({
    closeDateDB: closeDate,
         )};
    }
});

现在我想从Collection中获取此数据,并将我的Timer中的新endtime设置为此选择日期。

Meteor.startup(function () {
    var endtime = Data.findOne(???);
    timeinterval = setInterval(function () {
      Meteor.call("getCurrentTime", function (error, result) {
        Session.set("time", result);
        var t = getTimeRemaining(endtime);
        Session.set("t", t);
      });
    }, 1000);
  });

如何在数据库中获取插入日期并将其用于我的计时器?如何填写“???”在

Data.findOne(???);

EDIT ___

我尝试更好地定义我想要实现的目标。 如果用户进入该网站,他应该填写表格。像这样:

Template.addQuestions.events({
    'submit form':function(event){
      event.preventDefault();
      var questionText = $('[name="questionName"]').val();
      var categoryText = $('[name="categoryName"]').val();
      var closeDate = $('[name="date"]').val();
      Questions.insert({
        closeDateDB: closeDate,
        categoryDB1: categoryText,
        questionDB: questionText,
        createdAt: new Date(),
      }, function (error,results){
      Router.go('decision', {_id:results});
      }

正如你所看到的,我得到了closeDateDB,用户可以通过datepicker选择日期。我用了tsega:bootstrap3-datetimepicker。在此之后,用户被重定向到新创建的站点。

在这个新网站上,我想获取closeDate 例如“12/24/2015”作为我的倒计时器作为Meteor.startup();中的结束时间计数器应从当前时间计算,实际表单提交的日期/时间,用户在表单中输入的closeDate日期/时间。当实际日期/时间> closeDate,应关闭创建的网站,并将用户重定向到另一个网页。

1 个答案:

答案 0 :(得分:0)

我正在将此视为建模问题。当你有:

 Date.insert({ closeDateDB: closeDate });

您正在使用单个密钥 closeDateDB 在MongoDB中创建记录。

首先,这不会被用户编入索引,因此不清楚您打算如何处理这些事件。 Meteor.startup()将为每个新用户运行(在客户端或服务器端,具体取决于您定义它的位置)。每个人都有自己的动作吗?如果将来有多个事件会发生什么?

其次,当时间为> closeDate并且事件过去时会发生什么?

一些可能性:

// find a single random event in the future
Date.findOne({ closeDateDB: { $gte: new Date() } }); 

// find the next event
Date.findOne({ closeDateDB: { $gte: new Date() } },
  { sort: { closeDateDB: -1}} );

// find the next event for this user (assuming the userId key was added on insert)
Date.findOne({ userId: Meteor.userId(), closeDateDB: { $gte: new Date() } },
  { sort: { closeDateDB: -1}, limit: 1 } ); )