Я пытаюсь удалить сообщение в зависимости от его идентификатора.
Когда я даю конкретный идентификатор, как показано ниже, он работает. Но я хочу, чтобы он автоматически получал идентификатор сообщения и удалял его.
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>
Не имеет отношения к вашему вопросу, но не забудьте предотвратить атаки SQL-инъекций в строке кода контроллера 3, для получения дополнительной информации см. эту статью https://www.veracode.com/blog/secure-development/how- предотвратить-sql-injection-nodejs
Вы должны передать идентификатор из своего шаблона, когда вызывается 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
}
})
// ...
Можете ли вы показать шаблон, где вы вызываете метод?