質問

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 テストコレクションに。

今、私は /db /db /を取得しています

これは非常に間違っていると確信しています。 server.on、server.getも使用することになっていないと思います。アドバイスしてください、ありがとう。

役に立ちましたか?

解決

使用する必要があります server.post, 、あなたがしているので 役職 jquery経由でリクエスト。

server.on イベントリスナーをサーバーに追加します。この場合は存在しません /db/ イベントは、何にも引き起こされることはありません。

時間をかけてexpress.jsを必ず読んでください ガイド, 、node.js APIドキュメント 役に立つかもしれません。

他のヒント

あなたは投稿を期待しているので、あなたの / db /ハンドラーはで定義されるべきです server.post 方法。サーバーには、ポストと /db /の組み合わせに対して定義されたルートがないため、404を取得しています。

また、DB Connectを認証する必要があり、各リクエストで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