В nodejs
+ mongoose
, у меня есть схемы и функция:Параллельные Пишет Монго/Mongoose Создать Дубликаты
var storeSchema = new Schema({
sensor_id: {type: String, required: true},
dateString: {type: String, required:true},
created: {type: Date},
values: {}
});
storeSchema.index({sensor_id:1,dateString:1},{unique:true});
// sensorId and stringDate come from outside
//
function(sensorId,stringDate)
{
Store.findOneAndUpdate(
{
sensor_id: sensorId,
dateString:stringDate,
},
updated,
{
new:false
},
function(err, sensorResult){
if(err){
console.log(err);
return;
}
else
{
if (sensorResult === null)
{
var newRecord = {
sensor_id:sensorId,
dateString:stringDate,
created:new Date(),
};
Store.create(newRecord,function(err){
});
}
}
}
);
}
Мой скрипт просто проверяет, если запись существует: Если нет, то он создает новую запись, в противном случае обновляет Старый. Данные, которые нужно сохранить, исходят из другого сценария (в основном сервера).
Пакет представляет собой объект JSON, который содержит sensorId
и stringDate
. Однако, если я отправляю два идентичных «пакета» в скрипт, он хранит две дублированные записи, то есть с теми же dateString и sensorId.