Ajax post to node.js Express App?
-
11-10-2019 - |
Вопрос
Я пытаюсь аутентифицировать перед использованием Ajax для вставки в базу данных
$('#button').click(function () {
$.post('/db/', {
stuff: { "foo" : "bar"}
}, callback, "json");
});
Вот мой код 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'
}
});
});
^^ Эта часть работает нормально. Это происходит от шаблона, я могу пойти в Localhost и посмотреть на первую страницу.
Предполагается, что эта следующая часть будет там, где происходит вставка монго. Это дает мне 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);
});
});
});
Я пытаюсь вставить объект stuff
в TestCollection.
Прямо сейчас я получаю 404 включения /дБ /
Я уверен, что это очень неправильно. Я не думаю, что я должен использовать Server.on, Server.get тоже не работает. Пожалуйста, посоветуйте, спасибо.
Решение
Вы должны использовать server.post
, так как вы делаете ПОЧТА Запрос через jQuery.
server.on
добавит слушателя событий на сервер, в данном случае для несуществующего /db/
событие, которое никогда не запускается ничем.
Пожалуйста, не торопитесь и не забудьте прочитать Express.js Руководство, Node.js API документы может пригодиться тоже.
Другие советы
Поскольку вы ожидаете поста, ваш / дБ / обработчик должен быть определен в server.post
метод Вы получаете 404, потому что на сервере нет маршрута, определенного для комбинации Post и /db /.
Вы также должны быть аутентификацией подключения DB и не должны переподключаться с БД по каждому запросу
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(. . .);
});
});
});