AJAX пост к приложению node.js Express? - PullRequest
2 голосов
/ 15 января 2011

Я пытаюсь аутентифицироваться перед использованием 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 тоже не работает. Пожалуйста, сообщите, спасибо.

Ответы [ 3 ]

6 голосов
/ 15 января 2011

Вы должны использовать server.post, поскольку вы делаете запрос POST через jQuery.

server.on добавит прослушиватель событий на сервер, в данном случае длянесуществующее /db/ событие, которое никогда не запускается ничем.

Пожалуйста, не торопитесь и обязательно прочитайте express.js Guide , Node.js API Docs тоже может пригодиться.

2 голосов
/ 15 января 2011

Поскольку вы ожидаете публикацию, ваш / db / handler должен быть определен методом server.post.Вы получаете 404, потому что на сервере не определен маршрут для комбинации POST и /db/.

1 голос
/ 15 января 2011

Вы также должны аутентифицировать соединение с БД и не должны повторно подключаться к БД при каждом запросе

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(. . .);
    });
  });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...