[TIL] 210707
22294 ワード
今日、昨日作成した削除コメント機能で、削除APIの表示と変更方法が作成されました.
フロントでは、修正ボタンをクリックしたときに、新しい空間をどのように創造し、元のコメント内容をそのまま表現するかがポイントです.探していたら、ボタンをクリックすると、ディスプレイをnoneからblockに変えて、隠れた空間を表示するコードを見つけて、接ぎ木してみました.
新しいスペースを展示するとともに、既存のスペースも一緒に取り除くのでクリックすると同時に「既存スペース」「新スペース」「修正確認ボタン」の3つが変更されます.
最初はどのようなコンテンツしかロードされていないAPIだったのでtypeが「GET」なのか、どのようなコメントをもたらすのか分からないので、orderデータを「POST」に伝えました.
今考えてみればurlでorderデータを渡すとき、「GET」ができる.
これらが完了する限り、APIの変更およびAPIの削除は、既存のCRUDを使用することができる.
-------🖥️ Frontend-------
📂 変更バーのオン/オフ
フロントでは、修正ボタンをクリックしたときに、新しい空間をどのように創造し、元のコメント内容をそのまま表現するかがポイントです.探していたら、ボタンをクリックすると、ディスプレイをnoneからblockに変えて、隠れた空間を表示するコードを見つけて、接ぎ木してみました.
新しいスペースを展示するとともに、既存のスペースも一緒に取り除くのでクリックすると同時に「既存スペース」「新スペース」「修正確認ボタン」の3つが変更されます.
最初はどのようなコンテンツしかロードされていないAPIだったのでtypeが「GET」なのか、どのようなコメントをもたらすのか分からないので、orderデータを「POST」に伝えました.
今考えてみればurlでorderデータを渡すとき、「GET」ができる.
function openEdit(order) {
$.ajax({
type: 'POST',
url: `comments/read/edit/${postId}`,
data: { order: order },
success: function (response) {
const comment = response['comment'];
const preDiv = document.getElementById(`pastCommentContext${order}`);
const div = document.getElementById(`commentOrder${order}`);
const button = document.getElementById(`editOrder${order}`);
if (div.style.display === 'none') {
preDiv.style.display = 'none';
div.style.display = 'block';
button.style.display = 'block';
$(`#commentOrder${order}`).val(`${comment['comment']}`);
} else {
preDiv.style.display = 'block';
div.style.display = 'none';
button.style.display = 'none';
}
},
});
}
📂 APIの変更と削除
これらが完了する限り、APIの変更およびAPIの削除は、既存のCRUDを使用することができる.
function editComment(order) {
let newComment = $(`#commentOrder${order}`).val();
$.ajax({
type: 'PUT',
url: `comments/edit/${postId}`,
data: {
comment: newComment,
order: order,
},
success: function (response) {
alert('수정되었습니다.');
window.location.reload();
},
});
}
function deleteComment(order) {
const answer = confirm('정말로 삭제하시겠습니까?');
if (!answer) {
return;
} else {
$.ajax({
type: 'DELETE',
url: `comments/delete/${postId}`,
data: {
order: order,
},
success: function (response) {
alert('삭제되었습니다.');
window.location.reload();
},
});
}
}
-------⚙️ Backend-------
📂 APIの変更と削除
router.post('/read/edit/:postId', async (req, res) => {
const { postId } = req.params;
const { order } = req.body;
const comments = await Comment.findOne({ $and: [{ postId }, { order }] });
res.send({ comment: comments });
});
router.put('/edit/:postId', async (req, res) => {
const { postId } = req.params;
const { order, comment } = req.body;
if (comment === '') {
res.status(400).send({
errorMessage: '댓글을 작성해주세요.',
});
return;
}
await Comment.updateOne(
{
$and: [{ postId }, { order }],
},
{ $set: { comment } }
);
res.send();
});
router.delete('/delete/:postId', async (req, res) => {
const { postId } = req.params;
const { order } = req.body;
await Comment.deleteOne({
$and: [{ postId }, { order }],
});
res.send();
});
Reference
この問題について([TIL] 210707), 我々は、より多くの情報をここで見つけました https://velog.io/@dennis9352/TIL-210707テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol