Mongo无法使用node.js程序

Mongo not working with node.js program

本文关键字:node js 程序 Mongo      更新时间:2024-03-17

我正在尝试创建一个简单的node.js程序来输入、更新和删除人员的"姓名和工作"记录,并在浏览器中显示这些记录。我正在使用node.js、mongo和jade

以下是我的server.js文件(在"/base"文件夹中):

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文件(在"/base/views/"子文件夹中):

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文件(在"/base/views/"子文件夹中)是:

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

当我在浏览器中执行localhost:3000时,它会显示

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

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

错误是我没有在程序中打开数据库。db.open(函数(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