PainPoint

[PainPoint] Mongoose ์Šคํ‚ค๋งˆ ํƒ€์ž… ์ฃผ์˜

Ama_grammer 2024. 10. 21. 21:16

๐Ÿ’ฅ client ์—์„œ POSTํ›„ ๋ฐœ์ƒํ•œ ์—๋Ÿฌ

- client ์—์„œ ์ •๋ณด๋ฅผ POSTํ•˜๋˜ ์ค‘ ์•„๋ž˜์™€ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.

MongoServerError: E11000 duplicate key error collection: blog.users index: userID_1 dup key: { userID: null }
    at InsertOneOperation.execute (/Users/leeyunjae/programming/react/react_study/blogpractice/api/node_modules/mongodb/lib/operations/insert.js:51:19)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async executeOperation (/Users/leeyunjae/programming/react/react_study/blogpractice/api/node_modules/mongodb/lib/operations/execute_operation.js:136:16)
    at async Collection.insertOne (/Users/leeyunjae/programming/react/react_study/blogpractice/api/node_modules/mongodb/lib/collection.js:155:16) {
  errorResponse: {
    index: 0,
    code: 11000,
    errmsg: 'E11000 duplicate key error collection: blog.users index: userID_1 dup key: { userID: null }',
    keyPattern: { userID: 1 },
    keyValue: { userID: null }
  },
  index: 0,
  code: 11000,
  keyPattern: { userID: 1 },
  keyValue: { userID: null },
  [Symbol(errorLabels)]: Set(0) {}
}

์—ฐ์Šต์„ ์œ„ํ•ด ๊ธฐ์กด์— MongoDB๋ฅผ ๊ทธ๋Œ€๋กœ ํ™œ์šฉํ•˜์—ฌ ๊ธฐ๋Šฅ๊ตฌํ˜„์„ ํ•˜๋˜ ์ค‘ ๊ต์œก์ค‘ ์ž‘์„ฑํ•œ ์›๋ณธ์˜ userID๊ฐ’์ด NULL์ด๋ผ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. ๋ณ„๋„๋กœ ์›๋ณธ์„ ์‹คํ–‰์‹œํ‚ค์ง€๋Š” ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋А ๋ถ€๋ถ„์—์„œ ์›๋ณธ์˜ ๊ฐ’์„ ํ•„์š”๋กœํ•˜๋Š”์ง€ ์•Œ์•„๋ด์•ผํ•œ๋‹ค.


๐Ÿฅบ ์‹œ๋„ํ•œ ํ•ด๊ฒฐ๋ฐฉ๋ฒ• (1)

ํ”„๋กœ๊ทธ๋žจ์„ ๊ป๋‹ค๊ฐ€ ์ผœ๋ณด์ž!
์ฐพ์•„๋ณธ ๊ฒฐ๊ณผ ์ข…์ข… ์ด์ „ ๋ฐ์ดํ„ฐ๊ฐ€ ์ผ๋ถ€ ๋‚จ์•„ ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค. ์ด๋Ÿฐ ๊ฒฝ์šฐ๋Š” VSC๋ฅผ ์ข…๋ฃŒ ํ›„ ์žฌ์‹คํ–‰ํ•˜๋ฉด ํ•ด๊ฒฐ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ์žฌ์‹คํ–‰์„ ํ•ด๋„ ๋ฌธ์ œ๋Š” ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•˜๋‹ค...

๐Ÿฅบ ์‹œ๋„ํ•œ ํ•ด๊ฒฐ๋ฐฉ๋ฒ• (2)

MongoDB์† ๊ธฐ์กด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค ์‚ญ์ œํ•ด๋ณด์ž!
์›๋ณธ์—์„œ๋Š” userID์„ ์‚ฌ์šฉํ•˜์˜€์œผ๋‚˜ ์—ฐ์Šตํ• ๋•Œ๋Š” username์œผ๋กœ ์Šคํ‚ค๋งˆ๋ฅผ ๊ตฌ์„ฑํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ํ˜น์‹œ ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ปฌ๋ ‰์…˜ ๋‚ด๋ถ€์— ์Šคํ‚ค๋งˆ์˜ ๊ตฌ์„ฑ์ด ๋‹ฌ๋ผ ์˜ˆ๊ธฐ์น˜ ๋ชปํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๊ฒƒ์ธ๊ฐ€ ๋ผ๋Š” ์ƒ๊ฐ์„ํ•˜๊ฒŒ ๋˜์–ด ํ•œ๋ฒˆ ๊ธฐ์กด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•˜๊ณ  ๋‹ค์‹œ ๊ตฌ์„ฑํ•ด๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค.

ํ•˜์ง€๋งŒ, ์ด์ „์—๋„ ์—ฐ์Šต์„ ์œ„ํ•ด ์ถ”๊ฐ€ ๋ฐ์ดํ„ฐ ํ˜•์‹์ด ํ•„์š”ํ•  ๋•Œ ๋งˆ๋‹ค ํ•˜๋‚˜์”ฉ ์Šคํ‚ค๋งˆ์— ์ถ”๊ฐ€ํ•œ ์ ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‚ด๋ถ€์—์„œ ์Šคํ‚ค๋งˆ๊ฐ€ ๋‹ค๋ฅด๋‹ค๊ณ  ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์€ ๊ฒฝํ—˜ํ•œ์  ์—†์—ˆ๊ณ , ์—ญ์‹œ๋‚˜ ์ด ๋ฐฉ๋ฒ•์œผ๋กœ๋„ ๋ฌธ์ œ๋Š” ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•˜๋‹ค.

๐Ÿฅณ ํ•ด๊ฒฐ๋ฐฉ๋ฒ• (์ตœ์ข…)

๋ฌธ์ œ๋ฅผ ์ฐพ์•„๋ณธ ๊ฒฐ๊ณผ Stackoverflow ์—์„œ ๋™์ผํ•œ ๋ฌธ์ œ์— ๋Œ€ํ•ด ํ† ๋ก ํ•œ ๋ถ€๋ถ„์„ ์ฐพ์•˜๋‹ค. ๊ทธ๊ณณ์—์„œ ์ด์•ผ๊ธฐํ•œ ๋‚ด์šฉ์— ๋”ฐ๋ฅด๋ฉด ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” indexes ๋Š” ์‚ญ์ œ๋ฅผ ํ•ด์•ผ ์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์„ค๋ช…์„ ํ–ˆ๋‹ค.

Database -> Collections -> (๋ฌธ์ œ์˜ ์ปฌ๋ ‰์…˜์˜์—ญ) -> Indexes ์˜ ๊ฒฝ๋กœ๋กœ ๋“ค์–ด๊ฐ€ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” userID๋ฅผ ์‚ญ์ œ ํ•ด์ฃผ๋‹ˆ 

๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ๋‹ค.

์ฐพ์•„๋ณธ ๊ฒฐ๊ณผ mongoose์—์„œ ์Šคํ‚ค๋งˆ๋ฅผ ์„ค์ •ํ•˜๋ฉด์„œ required ๋ฅผ true๋กœ ์„ค์ •ํ›„ create๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— indexes์˜์—ญ์—์„œ ๋ณด๋ฉด required๊ฐ€ ์ ์šฉ๋จ์„ ์•Œ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

๊ฒฐ๋ก ์ ์œผ๋กœ ๋ฌธ์ œ๋Š” mongoose ์Šคํ‚ค๋งˆ์—์„œ ์„ค์ •ํ•œ required๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—๋„ ์˜ํ–ฅ์„ ์ค˜์„œ ํ•ด๋‹น ๊ฐ’์€ ๋ฌด์กฐ๊ฑด ์ž…๋ ฅํ•ด์•ผํ•˜๋Š” ์ƒํƒœ๊ฐ€ ๋œ๊ฒƒ์ด๋‹ค. ๊ทธ๋ ‡๊ธฐ์— ๋ณ„๋„๋กœ ๊ทธ ๊ฐ’์„ ํ•„์š”๋กœํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰์‹œํ‚ค์ง€ ์•Š์•„๋„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž์ฒด์— ์Šคํ‚ค๋งˆ๊ฐ€ ์„ค์ •๋œ๊ฒƒ์œผ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋งž๊ฒŒ ์ž‘์„ฑํ•  ํ•„์š”๊ฐ€ ์žˆ๋Š”๊ฒƒ์ด๋‹ค.


๐Ÿ’‚โ€โ™‚๏ธ ๋А๋‚€์ 

์‚ฌ์‹ค ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์—ฐ์Šต์„ ์œ„ํ•ด ๋‹ค๋ฅธ ์ฝ”๋“œ์™€ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ์ œ์™ธํ•˜๊ณ ๋Š” ์ด๋Ÿฐ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ผ์ด ์žˆ์„๊นŒ ์‹ถ์ง€๋งŒ, ์ด๋ฒˆ ๋ฌธ์ œ๋กœ ์Šคํ‚ค๋งˆ์˜ ํƒ€์ž…์˜ ํŠน์„ฑ์„ ๋‹ค๋ฃฐ ๋•Œ ๊ณ ๋ คํ•ด์•ผํ•  ๋ถ€๋ถ„์„ ์Šต๋“ํ–ˆ๊ณ , ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์ง„ํ–‰ํ•  ๋•Œ ๊ทœ์น™์˜ ์ผ๊ด€์„ฑ์˜ ์ค‘์š”์„ฑ์„ ๋‹ค์‹œํ•œ๋ฒˆ ์ฒด๊ฐํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

์ฐธ๊ณ  ์‚ฌ์ดํŠธ

https://stackoverflow.com/questions/24430220/e11000-duplicate-key-error-index-in-mongodb-mongoose

 

E11000 duplicate key error index in mongodb mongoose

Following is my user schema in user.js model - var userSchema = new mongoose.Schema({ local: { name: { type: String }, email : { type: String, require: true, unique: true }, ...

stackoverflow.com

 

๋Œ“๊ธ€์ˆ˜0