2012-01-11 88 views
1

我已經得到了Node.js服務器和Exressjs/Mongoose,我試圖在文檔中插入一些嵌入式文檔。下面是代碼:不能用Node.js和Mongoose插入到MongoDB

  • 節點代碼:

    app.post('/addcomment/:id', function(request, response){ 
    var sys  = require('util') 
        , mongoose = require('mongoose'); 
    
    mongoose.connect('mongodb://localhost/test'); 
    Schema = mongoose.Schema; 
    
    var CommentSchema = new Schema({ 
        descr: String  
    }); 
    var IssuesSchema = new Schema({ 
        name: String, 
        comment: [CommentSchema] 
    }); 
    
    mongoose.model('tasks', IssuesSchema); 
    var Issues = mongoose.model('tasks'); 
    var taskid = request.params.id; 
    
    var user = "test"; 
    var comment = request.param('descr');  
    
    Issues.findOne({_id: taskid}, function(err,item) 
    { 
        item.comment.push({descr:comment, posteddate: posteddate, user: user}); 
        item.save(); 
        response.writeHead(200,{"Content-Type": "text/plain"}); 
        response.write(JSON.stringify(t)); 
        response.end();   
    }); 
    

    });

  • 從用下面的代碼一個jquery即時決策POST請求:

     $.ajax({ 
         type: 'POST', 
         url: "http://myhost/addcomment/123", 
         async: false, 
         timeout: 5000, 
         cache: false, 
         data: { descr: $('#comment').val() } 
         ,success: function(data){ 
          console.log(data); 
         ,error: function(){console.log("err")} 
        }); 
    

當我使在節點控制檯POST請求有錯誤:不能調用未定義的方法「推動」 。在Chrome的同一點,請求仍處於「掛起」狀態。如果我再次啓動服務器(甚至在10秒後)請求「到達」並且記錄被插入,但是新會話和即時通訊無法獲取用戶名(這是我最初的想法)。 有人遇到過這種情況嗎?

謝謝! Stefan

回答

1

你應該真的把包含連接的代碼放到貓鼬以及路由回調之外的模式定義之外。目前,您將重新連接到貓鼬,並重新定義每個頁面請求的所有模式。

所以下面的代碼應該留在路線回調外:

var sys  = require('util') 
    , mongoose = require('mongoose'); 

mongoose.connect('mongodb://localhost/test'); 
Schema = mongoose.Schema; 

var CommentSchema = new Schema({ 
    descr: String  
}); 
var IssuesSchema = new Schema({ 
    name: String, 
    comment: [CommentSchema] 
}); 

mongoose.model('tasks', IssuesSchema); 
+0

非常感謝! (我剛剛開始使用node/mongo/express,但仍然有很多東西對我來說是不清潔的) – 2012-01-11 14:39:23

+0

很高興能幫到你,可以在這裏用Node和Mongoose簽出一個真正的項目:https://github.com/alexyoung/nodepad它的教程在這裏:http://dailyjs.com/tags.html#lmawa – alessioalex 2012-01-11 15:11:09

相關問題