2015-02-23 66 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