【请教】mongoose 插入数据的时候,如何做冲突验证。??
发布于 2年前 作者 echo2600 1028 次浏览

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了解不多,请各位帮帮忙吧~~ 谢谢

1 回复

某活动在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这样的记录即可,最大限度的利用索引。 当然这样存取就多了一层转换,但是比起每次保存就检索全部数据并逐一对比,应该要好的多。至于既不转换时间格式也不扫描全体数据的办法,呃,楼下来吧。

回到顶部