2

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' 
            }
  });
});

^^この部分は問題なく動作します。それは定型文から来ています、私はローカルホストに行ってフロントページを見ることができます。

この次の部分は、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も機能しません。アドバイス、ありがとう。

4

3 に答える 3

6

jQueryを介してPOSTserver.postリクエストを実行しているため、を使用する必要があります。

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

時間をかけて、express.jsガイドを必ずお読みください。Node.jsAPIドキュメント役立つ場合があります。

于 2011-01-14T22:40:45.177 に答える
2

投稿を期待しているので、/db/ハンドラーはserver.postメソッドで定義する必要があります。サーバーにPOSTと/db/の組み合わせに対して定義されたルートがないため、404を取得しています。

于 2011-01-14T22:42:34.357 に答える
1

また、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(. . .);
    });
  });
});
于 2011-01-14T22:47:45.237 に答える