강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Không có người viết

Bài viết có thông tin người viết đã bị xóa.

Từ những điều cơ bản về mongoDB đến công việc thực tế (feat. Node.js)

updateMany

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

Đã giải quyết

Viết

·

379

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 });
  }
});
javascriptnode.jsawsmongodbrest-apidbms/rdbms데이터-엔지니어링

Câu trả lời 1

0

해결

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로 해서 생긴 문제.....

 

sihoon님의 프로필 이미지
sihoon
Người chia sẻ kiến thức

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

 

Không có người viết

Bài viết có thông tin người viết đã bị xóa.

Đặt câu hỏi