我想将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
,应关闭创建的网站,并将用户重定向到另一个网页。
答案 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 } ); )