Sequelize로 Postgres DB와 React를 사용하고 있습니다. 내 프로젝트에서, 내 상태로 Album.id를 사용하여 앨범과 관련된 모든 노래를 삭제한다고 가정합니다.Sequelize, React를 사용하여 여러 행 삭제
** 앨범과 관련된 노래 행을 삭제하는 대신 데이터베이스에서 삭제 요청을 한 후 노래의 AlbumId 값을 제거합니다. **
내가 서비스의 외부와 동일하게 유지 this.state.Album.id 약속에 CONSOLE.LOG 언제 을 잃었 업데이트가 있습니다. 해당 번호의 서버에 도달했습니다.이
은 내부의 함수 인 반작용 구성 요소 DeleteAlbum (전자) { e.preventDefault()axios.delete(`${domain}/albums/${this.state.Album.id}`)
.then((res) => {
axios.delete(`${domain}/songs/ByAlbumId/${this.state.Album.id}`)
.then((res) => {
window.location.href = '/#/'
})
.catch((error) => {
console.log('axios error', error)
})
})
.catch((error) => {
console.log('axios error', error)
})
}
이이 경로
const express = require('express')
const router = express.Router()
const bodyParser = require('body-parser')
const db = require('./../models')
const Song = db.Song
router.use(bodyParser.json({ extended: false }))
const exists = (req) => {
if (typeof parseInt(req.params.id) === 'number') {
Album.findOne({
where: {
id: req.params.id
}
})
.then((album) => {
if (album) {
return true
};
return false
})
.catch((err) => {
return false
})
} else {
return false
}
}
router.delete('/ByAlbumId/:id', function (req, res) {
Song.destroy({
where: {
AlbumId: req.params.id
}
})
.then(function (data) {
return res.json(data)
})
.catch(function (err) {
return res.json({ error: err})
})
})
router.delete('/:id', function (req, res) {
if (exists) {
Song.destroy({
where: {
id: req.params.id
}
})
.then(function (data) {
return res.json(data)
})
.catch(function (err) {
return res.json({ error: err})
})
} else {
res.json({success: false})
}
})
이 앨범 인 노래의 데이터베이스입니다 경로
const express = require('express')
const router = express.Router()
const bodyParser = require('body-parser')
const db = require('./../models')
const Album = db.Album
router.use(bodyParser.json({ extended: false }))
const exists = (req) => {
if (typeof parseInt(req.params.id) === 'number') {
Album.findOne({
where: {
id: req.params.id
}
})
.then((album) => {
if (album) {
return true
};
return false
})
.catch((err) => {
return false
})
} else {
return false
}
}
router.delete('/:id', function (req, res) {
if (exists) {
Album.destroy({
where: {
id: req.params.id
}
})
.then(function (data) {
return res.json(data)
})
.catch(function (err) {
return res.json({ error: err})
})
} else {
res.json({success: false})
}
})
콘솔 로그 모든 곳에서, 출력은 내가 기대하는 것입니다. 내 앱에서 두 곡을 삭제하면 문제가 발생합니다. 우편 배달부와 직접 서버를 치면 여러 곡을 삭제할 수 있습니다
아무 생각하세요?
당신은 또한'삭제/앨범의 라우터에 대한 코드를 추가 할 수/: id'? – drinchev
@drinchev 더 자세한 내용을 –