ajax post per esprimere node.js app?
-
11-10-2019 - |
Domanda
Sto cercando di autenticazione prima di utilizzare Ajax per inserire in un database
$('#button').click(function () {
$.post('/db/', {
stuff: { "foo" : "bar"}
}, callback, "json");
});
Ecco il mio codice 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'
}
});
});
^^ questa parte funziona bene. Proviene da un boilerplate, posso andare a localhost e vedere la prima pagina.
Questa parte successiva dovrebbe essere dove l'inserto mongo accade. Questo mi dà una 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);
});
});
});
Quello che sto cercando di fare è inserire l'oggetto in stuff
TestCollection.
In questo momento mi sto un 404 on / db /
Sono sicuro che questo è molto sbagliato. Non credo che dovrei uso server.on, server.get non funziona neanche. Si prega di comunicare, grazie.
Soluzione
Devi usare server.post
, dal momento che si sta facendo richiesta di una POST tramite jQuery.
server.on
aggiungerà un listener di eventi al server, in questo caso per l'evento /db/
inesistente, che non viene mai attivato da qualsiasi cosa.
Si prega di prendere il vostro tempo e fare in modo di leggere il express.js Guida , i Node.js < a href = "http://nodejs.org/api.html" rel = "noreferrer"> Documentazione API potrebbe tornare utile anche.
Altri suggerimenti
Dal momento che sei in attesa di un post, il tuo / db / gestore dovrebbe essere definito in un metodo server.post
. Stai diventando un 404 perché il server non dispone di un percorso definito per la combinazione di POST e / db /.
È inoltre dovrebbe essere autenticato il db collegare e non dovrebbe essere la riconnessione al db su ogni richiesta ??p>
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(. . .);
});
});
});