이번 강의 내용은 아니지만 여러가지 해보다가 궁금해서 질문 드립니다
혹시 모델안에 배열이 있을 경우 배열안에 특정 id를 검색해서 그것만 수정하는 방법이 있을까요 ?
배열안에 추가는 $push와 삭제는 $pull로 잘 되는데...
수정하려고 보니 id 검색 후 배열 안의 객체 id를 또 검색해야 하는데 아무리 검색해봐도 방법을 모르겠네요 ㅠ..
지금 모델 구조는 이렇게 되어있구요
const UserSchema = new mongoose.Schema({
username: {
type: String,
required: true,
unique: true,
},
name: {
first: { type: String, required: true,},
last: { type: String, required: true, }
},
age: Number,
email: String,
array: [
{ name: { type: String } }
]
}, {
timestamps: true,
})
백엔드 코드는 이렇게 요청하고 있습니다
// test
app.post('/api/user/test/:userId', async(req, res) => {
try {
const { userId } = req.params;
const user = await User.findByIdAndUpdate(userId, {
$push: { array: { name: req.body.name } }
}, {new: true})
res.json(user)
} catch(err) {
console.log(err)
}
})
app.put('/api/user/test/:userId', async(req, res) => {
try {
const { userId } = req.params;
const user = await User.findOneAndUpdate(userId, {
// $pull: { //삭제
// array: { _id: '61c1f85f11fb31321cc79973' }
// }
}, { new: true })
res.json(user)
} catch(err) {
console.log(err)
}
})
위에 코드는 삭제 코드인데 ..삭제는 조건만 적으면 되니 해당 아이디를 찾아서 pull이 됩니다
아이디를 찾아서 array안에 name 을 수정하고 싶은데 혹시 어떻게 해야 될까요 ?
정말 감사합니다 !!! 강의 넘 좋아용