schema如下:
new schema({ when{days: Number, start:Number, period:Number} where: String })
// days:15840 – 天数,是毫秒/86400000后的日期(也就可以确定当前日期,即2013-05-15) //start:9 – 时间,代表上午九点开始 //period:2 – 持续时间, 代表从九点开始,持续2小时,即11点结束。
以上就是schema的描述。
需求: 插入数据的时候,需要做when的冲突验证。时间上有冲突的话,不执行插入操作。
①我的想法是在.pre()方法里查询是否有和当前传入的when冲突的数据,
问题:不知道该如何来实现①中的查询。
对mongoose了解不多,请各位帮帮忙吧~~ 谢谢
某活动在2013-05-15,9点举行,持续2小时,到11点结束,换个说法就是某活动从2013-05-15 09:00开始,到2013-05-15 11:00结束。两者在信息上是等效的。业务对象的建模不一定非要100%照搬原始输入信息,在不丢失信息的前提下可以稍做变化嘛。
因此when{days: Number, start:Number, period:Number}
可以转变为when{startDate:Date, endDate:Date}
。如此,只要简单的检查是否存在when.startDate< date < when.endDate
这样的记录即可,最大限度的利用索引。
当然这样存取就多了一层转换,但是比起每次保存就检索全部数据并逐一对比,应该要好的多。至于既不转换时间格式也不扫描全体数据的办法,呃,楼下来吧。