2015-02-21 2 views
-1

Я пытаюсь напечатать имя и работу людей после ввода ввода через html-форму в браузере. Программа также позволяет удалять и обновлять записи через простые ссылки на одной странице. Однако программа не работает.

Я даже попытался создать базу данных «newapp» (созданную в файле сервера) и заполнил ее некоторыми фиктивными значениями, программа все еще не работает!
Mongodb не работает с Nodejs

Ниже мои node.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("localhost", 27017), 
        {safe:true}, {auto_reconnect: true}), 
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.listen(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 

Любая помощь очень ценится. Большое спасибо!

+0

извини, не могли бы вы уточнить ... –

+0

я ответил ниже, пожалуйста, проверьте .. –

ответ

0

Ошибка в том, что я не сделал db.open (...) где-нибудь в программе

Правильный рабочий код:

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 
0

пожалуйста, проверьте эту надежду это будет работать ..

var express= require("express"), 
    http= require("http"), 
    bodyparser= require('body-parser'), 
var MongoClient = require('mongodb').MongoClient; 
var connect = require('connect'), 
    var app= express(), 
    MongoClient.connect("mongodb://localhost:27017/newapp", function(err, db) { 
    if(err) { return console.dir(err); } 

       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.listen(3000); 
+1

если вы найдете это полезным, пожалуйста, нажмите на принятие этого ответа. –

Смежные вопросы