Javascript 使用表单在PSQL数据库中插入数据
我试图用表单在数据库中插入数据,但我有一个问题,你能帮我一下吗?我使用的是NODE js express PSQL和EJS -------------------------------我的路由器----------------------Javascript 使用表单在PSQL数据库中插入数据,javascript,node.js,express,Javascript,Node.js,Express,我试图用表单在数据库中插入数据,但我有一个问题,你能帮我一下吗?我使用的是NODE js express PSQL和EJS -------------------------------我的路由器---------------------- //on importe le module express const express = require('express'); const router = express.Router(); //import des controleurs
//on importe le module express
const express = require('express');
const router = express.Router();
//import des controleurs
const mainController = require('./controllers/mainController');
const shortcutController = require('./controllers/shortcutController');
//const newsController = require('./controllers/newsController');
//const postitController = require('./controllers/postitController ');
//page d'accueil
router.get('/',mainController.home);
//Gerer les Web shortcuts
router.get('/:id',shortcutController.shortcut);
//Gerer les ajouts de raccourcis web
router.post('/formData', shortcutController.addShortcut);
//traitement des erreurs
router.use(mainController.notFound);
//on exporte le routeur pour l'utiliser dans d'autres modules de notre app
module.exports = router;
const dataMapper = require('../dataMapper');
const shortcutController = {
shortcut: (request, response, next) => {
//on récupère l'id de la promo dans les paramètres de l'url
const userId = request.params.id;
dataMapper.shortcut(userId, (shortcut) => {
if (!shortcut) {
next();
} else {
response.render('shortcut', {shortcut});
}
});
},
addShortcut: function(request, response) {
const shortcut = {};
shortcut.name = request.body.shortcut_name;
shortcut.link = request.body.shortcut_link;
shortcut.logo = request.body.shortcut_logo;
shortcut.user = request.body.shortcut_user;
const renderShortcut = (error, results)=>{
if(error){
console.error(error);
// Un render sur ta page ejs shortcutPage avec un message d'erreur si la requête à plantée
// PI : HTML ERROR 406 - Not Acceptable --> Pour les paramètres de requête qui la ferait planter :)
response.status(406).render('shortcut',{error:{message:"j'ai eu un problème!"}});
return;
}
// Un render sur ta page ejs shortcutPage avec un message d'erreur si l'insert ne retourne aucune nouvelle ligne
if(results.rows.length !== 1){
response.status(406).render('shortcut',{error:{message:"j'ai eu un problème!"}});
return;
}
response.redirect('/'); // Un redirect vers ton home. ou ailleurs :)
}
dataMapper.addShortcut(shortcut, renderShortcut); //tu passes à ton dataMapper un objet shortcut qui contient tes valeurs
},
};
module.exports = shortcutController;
//on centralise tous les accès à la BDD dans ce fichier
//on commence par importer le client postgres
const client = require('./database');
const dataMapper = {
shortcut: (id, callback) => {
client.query('SELECT * FROM "shortcut" WHERE shortcut_user=$1', [id], (error, results) => {
if (error) {
console.log('erreur datamapper', error);
callback();
} else {
const shortcuts = results.rows;
console.log(shortcuts);
callback(shortcuts);
}
});
},
addShortcut (shortcut, callback) {
const query = {
text: `INSERT INTO "shortcut" WHERE shortcut_user="loic" ("shortcut_name", "shortcut_link", "shortcut_logo", "shortcut_user")
VALUES ($1, $2, $3, $4) RETURNING *'}
client.query(query,[shortcut.name,shortcut.link,shortcut.logo,shortcut.user],callback);
},
};
module.exports = dataMapper;
------------------------------------我的控制器----------------------
//on importe le module express
const express = require('express');
const router = express.Router();
//import des controleurs
const mainController = require('./controllers/mainController');
const shortcutController = require('./controllers/shortcutController');
//const newsController = require('./controllers/newsController');
//const postitController = require('./controllers/postitController ');
//page d'accueil
router.get('/',mainController.home);
//Gerer les Web shortcuts
router.get('/:id',shortcutController.shortcut);
//Gerer les ajouts de raccourcis web
router.post('/formData', shortcutController.addShortcut);
//traitement des erreurs
router.use(mainController.notFound);
//on exporte le routeur pour l'utiliser dans d'autres modules de notre app
module.exports = router;
const dataMapper = require('../dataMapper');
const shortcutController = {
shortcut: (request, response, next) => {
//on récupère l'id de la promo dans les paramètres de l'url
const userId = request.params.id;
dataMapper.shortcut(userId, (shortcut) => {
if (!shortcut) {
next();
} else {
response.render('shortcut', {shortcut});
}
});
},
addShortcut: function(request, response) {
const shortcut = {};
shortcut.name = request.body.shortcut_name;
shortcut.link = request.body.shortcut_link;
shortcut.logo = request.body.shortcut_logo;
shortcut.user = request.body.shortcut_user;
const renderShortcut = (error, results)=>{
if(error){
console.error(error);
// Un render sur ta page ejs shortcutPage avec un message d'erreur si la requête à plantée
// PI : HTML ERROR 406 - Not Acceptable --> Pour les paramètres de requête qui la ferait planter :)
response.status(406).render('shortcut',{error:{message:"j'ai eu un problème!"}});
return;
}
// Un render sur ta page ejs shortcutPage avec un message d'erreur si l'insert ne retourne aucune nouvelle ligne
if(results.rows.length !== 1){
response.status(406).render('shortcut',{error:{message:"j'ai eu un problème!"}});
return;
}
response.redirect('/'); // Un redirect vers ton home. ou ailleurs :)
}
dataMapper.addShortcut(shortcut, renderShortcut); //tu passes à ton dataMapper un objet shortcut qui contient tes valeurs
},
};
module.exports = shortcutController;
//on centralise tous les accès à la BDD dans ce fichier
//on commence par importer le client postgres
const client = require('./database');
const dataMapper = {
shortcut: (id, callback) => {
client.query('SELECT * FROM "shortcut" WHERE shortcut_user=$1', [id], (error, results) => {
if (error) {
console.log('erreur datamapper', error);
callback();
} else {
const shortcuts = results.rows;
console.log(shortcuts);
callback(shortcuts);
}
});
},
addShortcut (shortcut, callback) {
const query = {
text: `INSERT INTO "shortcut" WHERE shortcut_user="loic" ("shortcut_name", "shortcut_link", "shortcut_logo", "shortcut_user")
VALUES ($1, $2, $3, $4) RETURNING *'}
client.query(query,[shortcut.name,shortcut.link,shortcut.logo,shortcut.user],callback);
},
};
module.exports = dataMapper;
--------------------------我的数据映射器----------------------
//on importe le module express
const express = require('express');
const router = express.Router();
//import des controleurs
const mainController = require('./controllers/mainController');
const shortcutController = require('./controllers/shortcutController');
//const newsController = require('./controllers/newsController');
//const postitController = require('./controllers/postitController ');
//page d'accueil
router.get('/',mainController.home);
//Gerer les Web shortcuts
router.get('/:id',shortcutController.shortcut);
//Gerer les ajouts de raccourcis web
router.post('/formData', shortcutController.addShortcut);
//traitement des erreurs
router.use(mainController.notFound);
//on exporte le routeur pour l'utiliser dans d'autres modules de notre app
module.exports = router;
const dataMapper = require('../dataMapper');
const shortcutController = {
shortcut: (request, response, next) => {
//on récupère l'id de la promo dans les paramètres de l'url
const userId = request.params.id;
dataMapper.shortcut(userId, (shortcut) => {
if (!shortcut) {
next();
} else {
response.render('shortcut', {shortcut});
}
});
},
addShortcut: function(request, response) {
const shortcut = {};
shortcut.name = request.body.shortcut_name;
shortcut.link = request.body.shortcut_link;
shortcut.logo = request.body.shortcut_logo;
shortcut.user = request.body.shortcut_user;
const renderShortcut = (error, results)=>{
if(error){
console.error(error);
// Un render sur ta page ejs shortcutPage avec un message d'erreur si la requête à plantée
// PI : HTML ERROR 406 - Not Acceptable --> Pour les paramètres de requête qui la ferait planter :)
response.status(406).render('shortcut',{error:{message:"j'ai eu un problème!"}});
return;
}
// Un render sur ta page ejs shortcutPage avec un message d'erreur si l'insert ne retourne aucune nouvelle ligne
if(results.rows.length !== 1){
response.status(406).render('shortcut',{error:{message:"j'ai eu un problème!"}});
return;
}
response.redirect('/'); // Un redirect vers ton home. ou ailleurs :)
}
dataMapper.addShortcut(shortcut, renderShortcut); //tu passes à ton dataMapper un objet shortcut qui contient tes valeurs
},
};
module.exports = shortcutController;
//on centralise tous les accès à la BDD dans ce fichier
//on commence par importer le client postgres
const client = require('./database');
const dataMapper = {
shortcut: (id, callback) => {
client.query('SELECT * FROM "shortcut" WHERE shortcut_user=$1', [id], (error, results) => {
if (error) {
console.log('erreur datamapper', error);
callback();
} else {
const shortcuts = results.rows;
console.log(shortcuts);
callback(shortcuts);
}
});
},
addShortcut (shortcut, callback) {
const query = {
text: `INSERT INTO "shortcut" WHERE shortcut_user="loic" ("shortcut_name", "shortcut_link", "shortcut_logo", "shortcut_user")
VALUES ($1, $2, $3, $4) RETURNING *'}
client.query(query,[shortcut.name,shortcut.link,shortcut.logo,shortcut.user],callback);
},
};
module.exports = dataMapper;