【发布时间】:2018-01-22 02:53:13
【问题描述】:
让我告诉你一些关于我的应用程序和问题的信息: 此应用程序将用于 将学生注册到组织推出的特定课程中。除其他信息外,学生将在表格中提供以下信息:
- 可用课程中的一门课程
- 他的照片
表格提交成功后,他可以打印准考证。
现在是管理员:
- 他可以创建任意数量的课程
- 他可以切换课程的可用性
- 他可以选择在哪里
start课程的卷号 - 他可以更改课程的
current卷号
学生点击提交后的步骤如下:
- 从表格中获取
course_id,并获取该课程的current卷号 - 将图像以
current卷号作为文件名保存在路径course_name/batch/roll_number.(png|jpg) - 图片保存成功则获取图片,否则拒绝
- 调整图片大小并覆盖现有图片,如果调整大小失败则删除图片并拒绝
- 将学生的表格保存在
forms集合中 - 在
courses集合中增加该课程的current卷号 - 发送包含表单数据的响应以及图像的 base64 字符串(将用于准考证)
问题:
问题是如果用户几乎同时提交表单,它可能会生成重复的卷号,因为他们将使用相同的current 卷号。
我无法解决这个问题,因为我不能简单地自动增加表单的 roll_number
因为它来自courses 集合。
这是我的数据库的样子:
{
"courses":[
{
"_id" : ObjectId,
"batches": [Object],
"course_name" : String,
"current": Number, // current roll number
"start" : Number, // starting roll number
"available": Boolean
}
],
"forms": [
{
"_id": ObjectId,
"roll_number": Number,
"course_id" : ObjectId
// other stuff
}
],
"settings": [ // always have one object
{
"_id" : ObjectId,
"accept_form": Boolean,
"courses": [ObjectId]
}
]
}
我正在使用:
保存图片的multer:https://github.com/expressjs/multer
调整图像大小的锐利:https://github.com/lovell/sharp
处理请求的expressjs
请告诉我应该怎么做才能解决这个重复问题。
【问题讨论】:
-
将架构中的
"current"定义为unique: true
标签: mongodb express mongoose multer sharp