에러
Uncaught ReferenceError: $ is not defined
제이쿼리를 상단에 정의 안해서
cdn jquery
cdn을 사용하면 빠르게 제이쿼리를 로드할 수 있습
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
상단에 입력
innerjoin 하는법
const {request_status} = require("../models");
const {service_request} = require('../models');
class Getallrepository {
// ORM인 Sequelize에서 Require_status 모델의 findAll 메소드를 사용해 데이터를 요청합니다.
findAllRequire = async () => {
const require_status = await request_status.findAll({
raw:true,//풀어버림 데이터삭제<<<<<<<<<<<<<<<<
include:[
{
model:service_request,
required: true,
attributes:[]//<<<<<<<<<<<<<<<<<<
}
],
attributes:['service_request.name','service_request.phone','service_request.address','service_request.request_details','current_status']//<<<<<<<<<<<
});
return require_status;
};
1

요걸 누르고 검사하고 싶은 곳을 누르면

내가 작성한 html이 어떻게 뜨는지 쭉 나온다.
<div class="col-12">
<select name="order" class="custom-select" id="inputGroupSelect">
<option value="-1" selected>상태변경</option>
<option value="1">대기 중</option>
<option value="2">수거 중</option>
<option value="3">수거 완료</option>
<option value="4">배송 중</option>
<option value="5">배송 완료</option>
</select>
<div class="input-group-append">
<button onclick="put_status(${i})" class="btn btn-outline-secondary" type="button">Button</button>
</div>
셀렉트박스에서 선택한 value를 보내고 싶었다. 버튼을 누르면 put_status함수로 i값이 날라가는데 같이 value를 보내고 싶었다. 재관님이 봐주시고 id도 for문으로 값을 줘야 한다고 알려주셨다.
<select name="order" class="custom-select" id="inputGroupSelect${i}">
맞다!!! 셀렉트 박스도 매 row마다 다 다른 것이었음

1. url을 어떻게 쓸까 고민을 많이 했다.
썬더클라우드로 백앤드를 시험 해봤을 때는 /api/status/2 돌린게 성공해서
/api/status/:request_id 로 해봤지만 어김없이 실패
지훈님이 백틱을 쓰면 된다고 하셨다.
지금까지 백틱을 get메소드에서 html 파일들 감쌀 때만 쓰는줄 알았다.
그림같이 /api/status/${i+1} 으로 잘 받아왔다.
$.ajax({
type: "PUT",
url: `/api/status/${i + 1}`,
data: { 'current_status': target.value },
success: function () {
alert("수정되었습니다")
window.location.reload()
}
})
이런 식으로 데이터를 보냈다.
그랬더니 controller에서 body값을 못 받는 것이다!!
아래 블로그에 답이 있다
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=moonv11&logNo=220605582547
contentType: 'application/json; charset=utf-8',
data: JSON.stringify(JSONObject),
서버에서도 @RequestParam 이 아닌 @RequestBody 로 데이터를 받아줘야 한다.
$.ajax({
type: "PUT",
url: `/api/status/${i + 1}`,
data: JSON.stringify({ 'current_status': target.value }),
contentType: 'application/json; charset=utf-8',
success: function () {
data: JSON.stringify(jsondata)
alert("수정되었습니다")
window.location.reload()
}
})
npm run dev 를 터미널에 입력하면 서버를 껐다 켰다 안해도 편하게 사용 가능
처음 의도는 버튼을 누르면 get방식으로 필요한 데이터를 받아와서 입력받은 데이터와 비교해 같으면 put방식으로 데이터 수정
이 지금까지 내가 쓰던 방식이었는데
토큰을 사용하며 필요가 없어짐
한 버튼에 한 기능 명심하자 남이 보기 편하게 코딩하자
function getuserid() {
let result3 = [];
$.ajax({
type: "GET",
url: "/api/status",
data: {},
success: function (response) {
console.log(response)
response.data.forEach((item) => {
result3.push([item.current_status, item.provider_id, item.request_id]);
})
)}}
return result3
}
routes 에 미드웨어 넣었따.
const AuthMiddleware = require('../controllers/auth.controller.js');
const authMiddleware = new AuthMiddleware();
router.put('/:request_id',authMiddleware.auth_middleware,getallController.updateRequireStatus);
컨트롤러에서 토큰에 저장된 user_id를 뽑아왔다. 뽑아서 provider_id에 넣음
const jwt = require('jsonwebtoken');
const provider_id = res.locals.user.user_id;
어렵다 하나하나 어렵다
고민하다 풀리면 너무 좋다
팀원과 같이 얘기를 나누면서 풀면 더 좋다