Как удалить конкретный пост по id? Вуэйс

Я пытаюсь удалить сообщение в зависимости от его идентификатора.

Когда я даю конкретный идентификатор, как показано ниже, он работает. Но я хочу, чтобы он автоматически получал идентификатор сообщения и удалял его.

Vue-файл:

deletePost() {
    var postId = 37;
    axios.delete('http://localhost:3000/api/message/wall/' + postId, {
        headers: {
            authorization: localStorage.token
        }
    }).then(function (response) {
        if (response.status == 200) {
            console.info('post supprimé')
        }
    }).catch(error => console.info(error))
}

Контроллер:

exports.deletePost = (req, res, next) => {
    const postId = req.params.postId;
    var sql = 'DELETE FROM wall WHERE id =' + postId;

    mysqlConnection.query(sql, function (err, result) {
        if (err) {
            throw err;
        } else {
            console.info(result);
            res.status(200).json(result);
        }
    })
}

Маршруты:

const express = require('express');
const router = express.Router();
const messageCtrl = require('../controllers/message');

router.get('/wall', messageCtrl.getAllTheWall);
router.post('/wall', messageCtrl.newPost);
router.delete('/wall/:postId', messageCtrl.deletePost);


module.exports = router;

Шаблон:

<div id = "wall" v-for = "wallpost in wallPosts" :key = "wallpost.id">
   <div class = "username">Posté par : <a href = "/#/profil">{{ wallpost.userPseudo }}</a></div>
   <div id = "deletePost">               <button id = "delete-acnt" v-if = "isAdmin" v-on:click = "deletePost()">Supprimer</button>             </div>
   <div class = "postTitle" v-html = "decodeURI(wallpost.title)"></div>
   <div class = "content" v-html = "decodeURI(wallpost.content)"></div>
   <div class = "image" v-if = "wallpost.urlImage"><img :src = "wallpost.urlImage"></div>
</div>

Можете ли вы показать шаблон, где вы вызываете метод?

catmal 15.12.2020 15:40

Не имеет отношения к вашему вопросу, но не забудьте предотвратить атаки SQL-инъекций в строке кода контроллера 3, для получения дополнительной информации см. эту статью https://www.veracode.com/blog/secure-development/how- предотвратить‌​-sql-injection-nodej‌​s

Mohd_PH 15.12.2020 15:49
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
2
384
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы должны передать идентификатор из своего шаблона, когда вызывается deletePost

Шаблон (я предполагаю, что ваш шаблон может выглядеть так)

<div v-for = "(post, index) in posts" :key = "index">
  <p>{{ post.title }}</p>
  <button @click = "deletePost(post.id)">Delete Post</button>
</div>

Скрипт

deletePost (postId) {
  axios.delete('http://localhost:3000/api/message/wall/'+postId , {
        headers: {
          authorization: localStorage.token
        }
      })

  // ...

Другие вопросы по теме