mongoose를 ORM으로 사용하여 mongodb를 데이터베이스로 사용하고 있습니다. 내 스키마에 고유 한 booking_id 필드가 있으므로 null을 가질 수 없습니다. 따라서 나는 이와 같은 코드를 디자인했습니다.
var bookingSchema = new Schema({
booking_id_customer: {
type: Number,
default : Math.floor(Math.random()*900000000300000000000) + 1000000000000000,
index: { unique: true }
},
처음에는 완벽하게 작동하지만 두 번째부터는이 중복 오류가 발생합니다.
{ [MongoError: E11000 duplicate key error index: xx.bookings.$booking_id_customer_1 dup key: { : 4.439605615108491e+20 }]
name: 'MongoError',
message: 'E11000 duplicate key error index:
나는 그것이 난수를 생성 할 것으로 기대하지만 두 번째로 무엇이 잘못되었는지에 대한 단서가 없습니다.
스키마 생성시 기본값을 한 번만 설정합니다.
새 문서마다 호출되도록하려면 Mongoose가 호출 할 함수로 전환해야합니다.
default : function() {
return Math.floor(Math.random()*900000000300000000000) + 1000000000000000
}
그러나 코드에 또 다른 문제가 있습니다. 사용중인 값 (900000000300000000000 및 1000000000000000)이를 초과 Number.MAX_SAFE_INTEGER
하여 문제가 발생할 수 있습니다.
mongoose.Types.ObjectId
Mongoose 및 MongoDB가 (고유 한) 문서 ID를 만드는 데 사용하는 ID 생성기로 사용 하는 것이 좋습니다 .
booking_id_customer : {
type : mongoose.Schema.Types.ObjectId,
default : mongoose.Types.ObjectId,
index : { unique: true }
}
또는 _id
고유 한 문서 의 속성을 재사용하십시오 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다