Node.js 猫鼬日期比较
我的应用程序将允许用户创建优惠券 优惠券将在Node.js 猫鼬日期比较,node.js,mongodb,Node.js,Mongodb,我的应用程序将允许用户创建优惠券 优惠券将在日期自和日期至期间有效 问题是,每张优惠券的有效期应为选定的日期,而不是小时 例如,从周一(2016-06-12)到周二(2016-06-13),所以两天 我应该如何在服务器端存储日期,然后使用Mongoose中的$gte子句进行比较 谢谢:-)您可以将过期时间存储为UNIX时间戳。在Mongoose模型中,可以使用expiration:{type:Number,required:true} 如果您有创建优惠券的用户界面,那么您可以将日期选择器配置为以
日期自
和日期至
期间有效
问题是,每张优惠券的有效期应为选定的日期,而不是小时
例如,从周一(2016-06-12)到周二(2016-06-13),所以两天
我应该如何在服务器端存储日期,然后使用Mongoose中的$gte
子句进行比较
谢谢:-)您可以将过期时间存储为UNIX时间戳。在Mongoose模型中,可以使用
expiration:{type:Number,required:true}
如果您有创建优惠券的用户界面,那么您可以将日期选择器配置为以UNIX时间戳发送时间
或者,如果您得到的是日期字符串,那么您可以使用var timestamp=new Date('Your_Date_string')代码>
以及计算您可以使用的天数。使用它,您可以使用.startOf()计算日期的开始日期使用.endOf()编码>和结束日期代码>
Moment JS返回的时间戳可用于Mongoose查询,如$gte:some_Timestamp
和$lte:some_Timestamp
如果要在优惠券持久化之前验证它,可以为日期字段创建max/min
值:
{ "_id" : 1, "couponStartDate" : ISODate("2016-06-26T18:57:30.012Z") }
{ "_id" : 2, "couponStartDate" : ISODate("2016-06-26T18:57:35.012Z") }
var startDate = new Date(); // I am assuming this is gonna be provided
var validDate = startDate;
var parametricDayCount = 2;
validDate.setDate(validDate.getDate()+parametricDayCount);
CouponModel.find({couponStartDate: {$gte: startDate, $lte: validDate}}, function (err, docs) { ... });
请参见官方提供的示例:
提示:字段名使用snake\u case
或camelCase
var s = new Schema({ dateto: { type: Date, max: Date('2014-01-01') })
var M = db.model('M', s)
var m = new M({ dateto: Date('2014-12-08') })
m.save(function (err) {
console.error(err) // validator error
m.dateto = Date('2013-12-31');
m.save() // success
})