简体   繁体   English

无法读取undefined的属性'insert'

[英]Cannot read property 'insert' of undefined

This is my first Node.js program using the Mongo db. 这是我使用Mongo db的第一个Node.js程序。 This is my code: 这是我的代码:

/** * Module dependencies. / ** *模块依赖项。 */ * /

 var express = require('express')
 , routes = require('./routes')
 , user = require('./routes/user')
 , http = require('http')
 , path = require('path');
 var mongo = require("./routes/mongo");
 var session = require('express-session');
 var MongoClient = require('mongodb').MongoClient;
 var assert = require('assert');

 var monStore=require("connect-mongo")(session);
 var url = 'mongodb://localhost:27017/session';


 var app = express();

 app.configure(function(){
   app.set('port', process.env.PORT || 4000);
   app.set('views', __dirname + '/views');
   app.set('view engine', 'ejs');
   app.use(express.favicon());
   app.use(express.logger('dev'));
   app.use(express.bodyParser());
   app.use(express.methodOverride());
   app.use(app.router);
   app.use(express.static(path.join(__dirname, 'public')));
 });

 app.configure('development', function(){
   app.use(express.errorHandler());
 });

 app.get('/', routes.index);
 app.get('/users', user.list);
 app.post('/signup',function(req,res){
var email=req.param("email");
var fname=req.param("firstname");
var lname=req.param("lastname");
var password=req.param("password");
var url1="mongodb://localhost:27017/signup";
mongo.connect(url1, function(){
var db= mongo.collection('user');

db.user.insert({"username": email,
                "password":password,
                "firstname":fname,
                "lastname":lname});

res.render("login",{title:"welcome"});
 });
 });

 app.post('/login',function(req,res){
    var email=req.param("email");
var password=req.param("password");
var url1="mongodb://localhost:27017/login";;
mongo.connect(url1, function(){
var db= mongo.collection('signup');
db.findOne({username: email, password:password}, function(err,user){
    console.log(user.email);
    if(user)
        {
        res.render("welcome");
        }
    else
        {
        res.render("login",{title:"ivalid"});
        }
});
});
 });

 MongoClient.connect(url, function() {

  console.log("Connected correctly to server.");

});
 http.createServer(app).listen(app.get('port'), function(){
console.log("Express server listening on port " + app.get('port'));
 });

i get the error Cannot read property 'insert' of undefined where i am trying to insert values into the database. 我得到错误无法读取未定义的属性'insert'我试图将值插入数据库。 Am I missing some point here? 我在这里错过了一些观点吗? Can somebody Please help me out? 有人可以帮帮我吗?

You are using db variable as a reference to the collection: 您正在使用db变量作为集合的引用:

var db= mongo.collection('user');

db.user.insert({"username": email,
...

The collection has no attribute called user , so that calling insert on it results in your error. 该集合没有名为user的属性,因此在其上调用insert会导致错误。

I believe that you wanted to do this: 我相信你想这样做:

var userCollection = var db= mongo.collection('user');

userCollection.insert({"username": email,
...

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM