【问题标题】:ajax post to node.js express app?ajax 发布到 node.js express 应用程序?
【发布时间】:2011-06-09 11:02:39
【问题描述】:

我正在尝试在使用 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 并查看首页。

下一部分应该是 mongo 插入发生的地方。这给了我一个 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。

现在我在 /db/ 上收到 404

我确定这是非常错误的。我不认为我应该使用 server.on,server.get 也不起作用。请指教,谢谢。

【问题讨论】:

    标签: javascript ajax node.js express


    【解决方案1】:

    您必须使用server.post,因为您正在通过 jQuery 发出POST 请求。

    server.on 将向服务器添加一个事件侦听器,在这种情况下用于不存在的/db/ 事件,它永远不会被任何东西触发。

    请花点时间阅读 express.js Guide,Node.js API Docs 也可能会派上用场。

    【讨论】:

      【解决方案2】:

      由于您期待一个帖子,您的 /db/ 处理程序应该在 server.post 方法中定义。您收到 404 是因为服务器没有为 POST 和 /db/ 的组合定义路由。

      【讨论】:

        【解决方案3】:

        您还应该对数据库连接进行身份验证,并且不应在每次请求时重新连接到数据库

        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(. . .);
            });
          });
        });
        

        【讨论】:

        • 我认为authentication函数中有错字?
        • 谢谢,我已将新的 mongo.db 移到请求回调之外,但我无法在外部获取身份验证功能,但它仍然可以工作。
        猜你喜欢
        • 2020-05-31
        • 1970-01-01
        • 2017-03-09
        • 2012-12-13
        • 2013-02-09
        • 2016-11-26
        • 1970-01-01
        • 1970-01-01
        • 2012-09-20
        相关资源
        最近更新 更多