updateMany에서 user._id를 못찾는 상황
397
작성자 없음
0 asked
강좌대로
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 });
}
});
Answer 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로 해서 생긴 문제.....
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

