inflearn logo
강의

Course

Instructor

mongoDB from basics to practice (feat. Node.js)

updateMany

updateMany에서 user._id를 못찾는 상황

Resolved

397

작성자 없음

0 asked

1

강좌대로

Blog.updateMany({ "user._id": userId }, { "user.name": name })

로 하니 블로그 데이터 유저 정보가 변경이 계속 안되고 있습니다 ㅠㅠ

유저 데이터는 정상적으로 변경이 되었는데요 문제점을 모르겠습니다.

해당 코드 깃허브 : https://github.com/alinfanclub/KimDevlogServer/blob/updateMany/src/routes/userRouter.js

 

 

 

userRouter.put("/:userId", async (req, res) => {
  try {
    const { userId } = req.params;
    if (!mongoose.isValidObjectId(userId))
      return res.status(400).send({ err: "invalid userId" });
    const { age, name } = req.body;
    if (!age && !name)
      return res.status(400).send({ err: "age or name is required" });
    if (age && typeof age !== "number")
      return res.status(400).send({ err: "age must be a number" });
    if (name && typeof name.first !== "string" && typeof name.last !== "string")
      return res.status(400).send({ err: "first and last name are strings" });
    // let updateBody = {};
    // if(age) updateBody.age = age;
    // if(name) updateBody.name = name;

    // const user = await User.findByIdAndUpdate(userId, updateBody, { new: true });
    let user = await User.findById(userId);
    if (age) user.age = age;
    if (name) {
      user.name = name;
      await Blog.updateMany({ "user._id": userId }, { "user.name": name });
    }
    await user.save();
    return res.send({ user });
  } catch (err) {
    console.log(err);
    return res.status(500).send({ err: err.message });
  }
});

javascript node.js aws mongodb rest-api dbms/rdbms 데이터-엔지니어링

Answer 1

0

alinefanclub

해결

const BlogSchema = new Schema(
  {
    title: { type: String, required: true },
    content: { type: String, required: true },
    islive: { type: Boolean, required: true, default: false },
    user: {
      _id: { type: Object, required: true, ref: "user" },
      username: { type: String, required: true },
      name: {
        first: { type: String, required: true },
        last: { type: String, required: true },
      },
    },
    comments: [commentSchema],
  },
  { timestamps: true }
);

=>

 

const BlogSchema2 = new Schema(
  {
    title: { type: String, required: true },
    content: { type: String, required: true },
    islive: { type: Boolean, required: true, default: false },
    user: {
      _id: { type: Types.ObjectId, required: true, ref: "user" },
      username: { type: String, required: true },
      name: {
        first: { type: String, required: true },
        last: { type: String, required: true },
      },
    },
    commentsCount: { type: Number, default: 0, required: true },
    comments: [commentSchema],
  },
  { timestamps: true }
);

바보같이 user type을 object로 해서 생긴 문제.....

 

0

sihoon

아이고 고생하셨습니다! 개발자를 귀찮게 하는 흔한 실수이죠..! ㅎㅎ

 

option usecreateindex is not supported 오류 나면은

0

147

1

Schemaless 특성을 재생시 검은화면이 나와요

0

241

1

user 내장 시 ref 필드 필요성

0

240

1

await 관련해서 질문드릴게 있습니다!!

0

293

2

섹션6의 3번째 강의 faker파일이 어디있나요?

0

309

1

$elemMatch 질문이 있습니다.

0

248

1

DB 업데이트에 실패했을 상황에서 대처는 어떻게 할 수 있나요.

2

767

2

블로그에 user 데이터를 추가하는 방법에 대해서

0

238

1

blog 데이터 생성시 user 관련 오류

0

352

1

age 예외 처리를 별도로 하신 이유가 궁금합니다.

2

302

2

delete 메소드가 많은 이유가 궁금합니다.

0

182

1

unique validation 처리

0

297

1

find() 가 리턴하는 instance member

1

432

3

몽고 db를 백업방법을 부탁합니다.

0

604

1

인덱스 생성시점

0

713

1

$pull 문법에 대한 질문

0

360

1

comment의 id가 생성되는 시점

1

303

1

리팩토링 강의에서 라우터 리팩토링 전개연산자(...)

1

316

1

session.abortTransaction()에 대한 실제 예시 문의

0

289

1

섹션9 Computed Fields 강의에서, 다음 강의 가기 전 빠진부분

-1

411

1

faker 패키지 취약성 이슈

1

488

1

라우터 리팩토링

0

345

1

섹션4 진행중, mongoose 질문

0

312

1

섹션1 - ObjectID

0

421

1