我想知道我的Days Mongo集合是否包含今天的任何JavaScript Date()对象。
var start = new Date().setHours(0,0,0);
var end = new Date().setHours(23,59,59);
var x = Days.find({time: {$gte: start, $lt: end}}).count(); // always returns 0.
console.log(x);
我可以在控制台中看到结果,但不知道如何根据结果提取我需要的条件。
我正在创建一个非常基本的应用程序,用于跟踪每天一次的时间(并突出显示您在设置标准目标时间之前所做的事情)。
它基本上更简单http://5clubapp.com,可让您设定时间。
数据库非常基础:天
的集合Days = new Mongo.Collection("days");
...每个人都有一个JavaScript Date()对象:time: Date()
。
punchIn: function () {
var start = new Date().setHours(0,0,0);
var end = new Date().setHours(23,59,59);
var x = Days.find({time: {$gte: start, $lt: end}}).count();
if (x == 0) {
// Punch in
Days.insert({
time: new Date() // current time
});
} else {
// You already punched in today
}
到目前为止,我正在享受Meteor,但我对Mongo来说是全新的。答案可能非常简单,但我所尝试的并没有奏效,所以我转向你。
这只是一个测试项目,可以帮助我熟悉Meteor& amp; Mongo,所以我尽量保持简单。 (如果我有时间,我会在以后添加内容 - 用户,可自定义的目标......甚至可能是图表!)
谢谢。
答案 0 :(得分:2)
当你执行new Date().setHours(0,0,0)
时,它会创建一个新的Date
对象然后运行setHours
,它会执行您想要的操作,但返回整数表示形式date,这是你最终存储在start
中的内容。你需要这样做:
var start = new Date();
start.setHours(0,0,0);
var end = new Date();
end.setHours(23,59,59);
如果您要进行大量日期操作,我建议使用像moment这样的库。我还建议punchIn
是一种方法(从您的问题中不清楚),以便使用相同的时钟(服务器)来记录所有日期。