2016-10-20 301 views
0

我在模型文件夾中創建了一個db.js和empleado.js。我可以連接到db.js,但不能連接到empleado.js。我出口是連接在empleado.js但控制檯顯示以下錯誤:nodejs mongoose連接到數據庫錯誤

$ node app 
C:\Users\Dario\documents\02 - trabajo\97 - proyectos\test\app.js:14 
empleado.setConnection(db); 
     ^

TypeError: empleado.setConnection is not a function 
    at Object.<anonymous> (C:\Users\Dario\documents\02 - trabajo\97 - proyectos\ 
test\app.js:14:10) 
    at Module._compile (module.js:556:32) 
    at Object.Module._extensions..js (module.js:565:10) 
    at Module.load (module.js:473:32) 
    at tryModuleLoad (module.js:432:12) 
    at Function.Module._load (module.js:424:3) 
    at Module.runMain (module.js:590:10) 
    at run (bootstrap_node.js:394:7) 
    at startup (bootstrap_node.js:149:9) 
    at bootstrap_node.js:509:3 

app.js

var express = require('express'); 
var path = require('path'); 
var favicon = require('serve-favicon'); 
var logger = require('morgan'); 
var cookieParser = require('cookie-parser'); 
var bodyParser = require('body-parser'); 

var routes = require('./routes/index'); 
var users = require('./routes/users'); 


var db = require('./model/db');    // DataBase Connection 
var empleado = require('./model/empleado'); // Employee Data Model 
empleado.setConnection(db); 

var app = express(); 

// view engine setup 
app.set('views', path.join(__dirname, 'views')); 
app.set('view engine', 'jade');      // Utilizo Jade para vas views (vistas) 

// uncomment after placing your favicon in /public 
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); 
app.use(logger('dev')); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: false })); 
app.use(cookieParser()); 
app.use(express.static(path.join(__dirname, 'public'))); // Activamos un directorio de archivos estáticos 

app.use('/', routes); 
app.use('/users', users); 

// catch 404 and forward to error handler 
app.use(function(req, res, next) { 
    var err = new Error('Not Found'); 
    err.status = 404; 
    next(err); 
}); 

// error handlers 

// development error handler 
// will print stacktrace 
if (app.get('env') === 'development') { 
    app.use(function(err, req, res, next) { 
    res.status(err.status || 500); 
    res.render('error', { 
     message: err.message, 
     error: err 
    }); 
    }); 
} 

// production error handler 
// no stacktraces leaked to user 
app.use(function(err, req, res, next) { 
    res.status(err.status || 500); 
    res.render('error', { 
    message: err.message, 
    error: {} 
    }); 
}); 

module.exports = app; 

db.js

// Integro mongoose al proyecto 
var mongoose = require('mongoose'); 

// Archivo de configuración de la Base de Datos 
var config = require('../config/db'); 

// Armo el string de conección de la Base de Datos 
var dbURI = 'mongodb://' + config.host + '/' + config.db; 

// Conecto la Base de Datos 
var db = mongoose.connect(dbURI); 

// Gestionando eventos de conección a la Base de Datos 
db.connection.on('connected', function() { 
    console.log('Mongoose conectado a ' + dbURI); 
}); 

db.connection.on('error',function (err) { 
    console.log('Mongoose error de conección: ' + err); 
}); 

db.connection.on('disconnected', function() { 
    console.log('Mongoose desconectado'); 
}); 

process.on('SIGINT', function() { 
    db.connection.close(function() { 
     console.log('Mongoose desconectado por finalización de la aplicación'); 
     process.exit(0); 
    }); 
}); 

module.exports = db; 

empleado.js

var mongoose = require('mongoose'); 

    exports.setConnection = function(connection) { 
     mongoose = connection; 
    } 


    var empSchema = new mongoose.Schema ({ 
     nombre: String, 
     apellidos: String 
    }); 

    var empModelo = mongoose.model('Empleado', empSchema, 'empleados'); 

    module.exports = empModelo; 

在此先感謝。 我是新在MongoDB中,貓鼬和的NodeJS

回答

0

我覺得這裏最好的辦法要求empleado.js時,路過的貓鼬:

var empleado = require('./model/empleado')(mongoose); 

然後,你不需要有setConnection方法。

empleado.js文件將是這樣的:

module.exports = function(mongoose) { 
    var empSchema = new mongoose.Schema ({ 
    nombre: String, 
    apellidos: String 
    }); 

    return mongoose.model('Empleado', empSchema, 'empleados'); 
}; 
+0

連接出口到empleado.js,但集「empleados」沒有在連接 – grandtjs

+0

能否請您詳細闡述出?您是否嘗試使用該模型保存或獲取文檔?墜毀事件是否得到解決? – andresk