Вопрос

Я пытаюсь аутентифицировать перед использованием 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(. . .);
    });
  });
});
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top