2015-02-23 60 views
0

我正在尝试创建一个简单的node.js程序来输入,更新和删除人员的“名称和作业”记录,并在浏览器中显示相同内容。我在使用node.js,mongo和jade。
Mongo不能使用node.js程序

以下是我server.js文件(在 “/基地” 文件夹):

var express= require("express"), 
http= require("http"), 
bodyparser= require("body-parser"), 
mongo= require("mongodb"); 

var app= express(); 
db= new mongo.Db("newapp", new mongo.Server("127.0.0.1", "27017"), 
          {safe:true}, {auto_reconnect: true}); 

var people= db.collection("people"); 

app.use(bodyparser.urlencoded({extended: true})); 

app.get("/", function(req, res){ 
    people.find().toArray(function(err, docs){ 
      if(err) 
       throw err; 
      res.render("index.jade", {people: docs}); 
    }); 
}); 

app.post("/", function(req, res){ 
    people.insert({name: req.body.name, job: req.body.job}, 
      function(err, doc){ 
        if(err) 
         throw err; 
        res.redirect("/"); 
      }); 
}); 

app.get("/update/:id", function(req, res){ 
    people.findOne({_id: new mongo.ObjectID(req.params.id)}, 
      function(err, doc){ 
        if(err) 
         throw err; 
        res.render("update.jade", {person: doc}); 
      }); 
}); 

app.post("/update/:id", function(req, res){ 
    people.update({_id: new mongo.ObjectID(req.params.id)}, 
      { 
        name: req.body.name, 
        job: req.params.job 
      }, function(err, item){ 
        if(err) 
         throw err; 
        res.rediect("/"); 
      }); 
}); 

app.get("/delete/:id", function(req, res){ 
    people.remove({_id:new mongo.ObjectID(req.params.id)}, 
      function(err){ 
        if(err) 
      throw err; 
      res.redirect("/"); 
      }); 
}); 

app.listen("3000", function(){ 
    console.log("Now Listening on port: 3000"); 
}); 

我有一个index.jade文件(在 “/基/视图/” 子文件夹) :

form(method="POST") 
    p Name: 
     input(type="text", name="name") 

    p Job: 
     input(type="text", name="job") 

    p: button Add 

if(typeof(people)!=="undefined") 
    ul 
      each person in people 
        li 
         h2= person.name+ " ("+ person.job+ ")" 
         p 
          a(href="/update/#{person._id}") Update 
          a(href="/delete/#{person._id}") Delete 

else 
    p No People 

我update.jade文件(在 “/基/视图/” 子文件夹)是:

form(method="POST") 
    p Name: 
      input(type="text", name="name", value="#{person.name}") 

    p Job: 
      input(type="text", name="job", value="#{person.job}") 

    p: button Update 

当我做本地主机:在浏览器3000,它说

GET http://localhost:3000/ net::ERR_CONNECTION_REFUSED 

任何帮助非常感谢,非常感谢!

+0

首先所有支票mongo正在运行或不运行。 然后改变“localhost”而不是“127.0.0.1” ,并确保端口3000是免费的!它应该是号码 – 2015-02-23 13:30:58

+0

嗯,做了所有这些变化,mongo正在运行,3000端口是免费的;同样的错误:加载资源失败:net :: ERR_CONNECTION_REFUSED – 2015-02-23 13:38:42

+0

请检查您的端口3000是否已经绑定 - using -''netstat -an | grep LISTEN | grep -v^unix'' – 2015-02-23 13:41:41

回答

0

错误是我没有打开程序中的数据库。 db.open(function(err,db){....});是缺少的部分。

工作代码:

var express= require("express"), 
http= require("http"), 
bodyparser= require("body-parser"), 
mongo= require("mongodb"); 

var app= express(), 
db= new mongo.Db("newapp", new mongo.Server("localhost", "27017"), 
          {safe:true}, {auto_reconnect: true}); 

app.use(bodyparser.urlencoded({extended: true})); 

db.open(function(err, db){ 
    if(err) 
     console.log(err); 

    people= db.collection("people"); 

    app.get("/", function(req, res){ 
     var cursor= people.find(); 
     cursor.toArray(function(err, docs){ 
      if(err) 
       throw err; 
      res.render("index.jade", {people: docs}); 
     }); 
    }); 

    app.post("/", function(req, res){ 
     people.insert({name: req.body.name, job: req.body.job}, 
      function(err, doc){ 
        if(err) 
         throw err; 
        res.redirect("/"); 
      }); 
    }); 

    app.get("/update/:id", function(req, res){ 
     people.findOne({_id: new mongo.ObjectID(req.params.id)}, 
      function(err, doc){ 
        if(err) 
         throw err; 
        res.render("update.jade", {person: doc}); 
      }); 
    }); 

    app.post("/update/:id", function(req, res){ 
     people.update({_id: new mongo.ObjectID(req.params.id)},{ 
        name: req.body.name, 
        job: req.body.job 
      }, function(err, item){ 
        if(err) 
         throw err; 
        res.redirect("/"); 
      }); 
    }); 

    app.get("/delete/:id", function(req, res){ 
     people.remove({_id: new mongo.ObjectID(req.params.id)}, 
      function(err){ 
      if(err) 
       throw err; 
      res.redirect("/"); 
      }); 
    }); 
}); 

app.listen(3000, function(){ 
    console.log("Now Listening on port: 3000"); 
}); 

的index.jade(在视图文件夹)是:

form(method="POST") 
    p Name: 
     input(type="text", name="name") 

    p Job: 
     input(type="text", name="job") 

    p: button Add 

if(people!==NULL) 
    ul 
     each person in people 
       li 
        h2= person.name+ " ("+ person.job+ ")" 
        p 
         a(href="/update/#{person._id}") Update&nbsp 
         a(href="/delete/#{person._id}") Delete 

else 
    p No People 

的update.js(在视图文件夹)是:

form(method="POST") 
    p Name: 
      input(type="text", name="name", value="#{person.name}") 

    p Job: 
      input(type="text", name="job", value="#{person.job}") 

    p: button Update