poste ajax à Node.js exprimer app?
-
11-10-2019 - |
Question
Je suis en train de Authentifier avant d'utiliser ajax à insérer dans une base de données
$('#button').click(function () {
$.post('/db/', {
stuff: { "foo" : "bar"}
}, callback, "json");
});
Voici mon code Node.js:
server.get('/', function(req,res){
console.log(res);
res.render('index.ejs', {
locals : {
header: '#Header#'
,footer: '#Footer#'
,title : 'Page Title'
,description: 'Page Description'
,author: 'Your Name'
,analyticssiteid: 'XXXXXXX'
}
});
});
^^ cette partie fonctionne bien. Il vient d'un passe-partout, je peux aller à localhost et voir la première page.
La partie suivante est censée être là où l'insert mongo arrive. Cela me donne une erreur 404.
server.on('/db/', function(req,res){
console.log(req);
console.log(res);
var db = new mongo.Db( 'dbname' , new mongo.Server( 'localhost', 20003, {}), {});
db.open(function (err) {
db.collection('testCollection', function (err, collection) {
collection.insert(res.stuff);
});
});
});
Ce que je suis en train de faire est d'insérer le stuff
objet en testCollection.
En ce moment je suis obtenir un 404 sur / db /
Je suis sûr que cela est très mauvais. Je ne pense pas que je suis censé utiliser server.on, server.get ne fonctionne pas non plus. S'il vous plaît conseiller, merci.
La solution
Vous devez utiliser server.post
, puisque vous faites la demande d'un POST via jQuery.
server.on
ajoutera un écouteur d'événement au serveur, dans ce cas pour l'événement /db/
inexistant, qui ne se déclenche par quoi que ce soit.
S'il vous plaît prenez votre temps et assurez-vous de lire le express.js Guide , les Node.js < a href = "http://nodejs.org/api.html" rel = "noreferrer"> API Docs pourrait être utile aussi.
Autres conseils
Puisque vous vous attendez à un poste, votre / db / gestionnaire doit être défini dans une méthode de server.post
. Vous obtenez un 404 parce que le serveur ne dispose pas d'un itinéraire défini pour la combinaison de POST et / db /.
vous devriez aussi être authentifiez db connecter et ne doit pas être reconnecter à la db sur chaque requête
var db = new mongo.Db( 'dbname' , new mongo.Server( 'localhost', 20003, {}), {});
db.authenticate(user, password, function({ // callback }));
server.post('/db/', function(req,res){
db.open(function (err) {
db.collection('testCollection', function (err, collection) {
collection.insert(. . .);
});
});
});