Tag: 种族条件

mongoose自定义validationfunction与竞争条件

我们有一个日历API,用于在一天内预订一个插槽 SlotShcema startDateTime:Date // showing the day and the starting hour duration:number // showing the slot duration 我们可以计算出槽的结束 endDateTime = startDateTime + duration 我们要添加一个validation,所以没有两个槽相交,只有一个用户可以预订它。 我发现服装asynchronous自定义validation器 ,但我们无法find我们的场景任何文档。 问题是想方设法解决两个并发保存可能节省冲突预订“交易”的竞争条件。 在开始创build插槽之前,我做了自己的validationfunction,但是如果有竞争条件,它可能同时保存两个插槽,这是错误的。 有什么方法可以解决比赛条件? 问题在GitHub https://github.com/Automattic/mongoose/issues/5876

mongoosevalidation比赛条件?

我有一个叫做Application的模型: var ApplicationSchema = new mongoose.Schema({ name : {type: String, validate: [uniqueName, 'Unique Name']}, dateCreated: Date, containers : [ContainerSchema] }); mongoose.model('Application', ApplicationSchema); var Application = database.model('Application'); 它保存时会调用一个名为uniqueName的validation函数: function uniqueName(name) { console.log('In Unique Name function'); Application.find({}, function(error, documents) { for(var i = 0; i < documents.length; i++) { if(documents[i].name == name) { console.log('About to return false'); […]

javascript – 事件驱动和并发问题?

问候, 我一直在学习javascript,nodejs。 而我不明白如何在JavaScript中避免并发问题。 可以说我正在处理一个对象 var bigObject = new BigObject(); 我有一个setTimer(function(){ workOnBigOjbect…} ) ,也将在bigOjbect工作。 如果我将磁盘IO写入bigObject ,并使用一个定时器对象来处理bigObject ,并定期从bigObject读取代码,那么如何避免并发问题呢? 在常规语言中,我会使用互斥或​​线程安全的队列/命令模式。 我也没有看到有关JavaScript的竞争条件的讨论。 我错过了什么吗?