2012-01-11 91 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

相关问题