sequlize处理并发请求的问题
做前端监控,建立了一个关系表,LogAndError
,每天访问记录一条数据,保存页面加载次数,错误次数等字段。如果同时访问的话每天的记录会创建多条,而不是在同一条上更新。
代码如下:
static async addOrCreate(ctx, addType){
let date = new Date()
let formatTime = date.getFullYear() + '-'+(date.getMonth()+1) + '-' + date.getDate()
// 查看某一天是否已经存在一条数据
let res = await LogAndError.findOne({
where: {
webMonitorId: ctx.request.body.webMonitorId,
happenTime: formatTime
}
})
let updateObj = {}
switch(addType){
case 1:
// js错误
updateObj = {
jsErrorCount: sequelize.literal('jsErrorCount+1')
}
break;
case 2:
// 资源加载错误
updateObj = {
resourceErrorCount: sequelize.literal('resourceErrorCount+1')
}
break;
case 3:
// 页面加载
updateObj = {
loadCount: sequelize.literal('loadCount+1')
}
break;
}
// 存在的话就去更新数据中的字段
if(res){
return await LogAndError.update(
updateObj,
{
where: {
webMonitorId: ctx.request.body.webMonitorId,
happenTime: formatTime
}
}
)
}else{
// 不存在的话就去创建一条新的数据
return await LogAndError.create(Object.assign(ctx.request.body,{happenTime: formatTime}))
}
}
如果多个请求同时出发,某一天的数据就会出现多条,这个该怎么解决?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论