Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Nodejs和Expressjs-未定义变量_Javascript_Node.js_Express_Mongoose - Fatal编程技术网

Javascript Nodejs和Expressjs-未定义变量

Javascript Nodejs和Expressjs-未定义变量,javascript,node.js,express,mongoose,Javascript,Node.js,Express,Mongoose,我有以下代码,但我得到一个错误,即未定义成员。因此,我尝试将/路由移动到db。有一次阻塞,但它只是停止,什么也不做 作为一个完全初学者在这个领域,我是适当的卡住,所以任何帮助将不胜感激 var express = require( 'express' ); var mongoose = require('mongoose'); var http = require( 'http' ); var path = require( 'path' ); var app = expre

我有以下代码,但我得到一个错误,即未定义成员。因此,我尝试将
/
路由移动到
db。有一次
阻塞,但它只是停止,什么也不做

作为一个完全初学者在这个领域,我是适当的卡住,所以任何帮助将不胜感激

var express = require( 'express' );
var mongoose = require('mongoose');
var http    = require( 'http' );
var path    = require( 'path' );
var app     = express();

// all environments
app.set( 'port', process.env.PORT || 3001 );
app.use( express.logger( 'dev' ));
app.use( express.bodyParser());
app.use( express.json());
app.use( express.urlencoded());
app.use( express.methodOverride());
app.use( app.router );

// development only
if ( 'development' == app.get( 'env' )) {
  app.use( express.errorHandler());
}

mongoose.connect('mongodb://localhost/dbname');
var db = mongoose.connection;

db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function callback () {
  var memberSchema = new mongoose.Schema({
    name: String,
    email: String
  });
  var Member = mongoose.model( 'Member', memberSchema );

});


//******ROUTES*******//
app.get('/', function(req, res){
  Member.find(function(err, members) {
    if (err) return console.error(err);
    console.dir(members);
  });
});

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

Member
只是回调函数中的一个局部变量。那么,在路由中使用它的最佳方法是什么呢?这是我不确定的一点。我试着在
db内移动路由。正如我所说,有一次
阻塞,但不确定这是否正确!(并且它不起作用)在
db.once()
var成员之前定义'Member'。在回调函数中:
Member=mongoose.model('Member',memberSchema)。在路由处理程序中:
if(Member){Member.find(…)}else{console.log('Member未定义');}您真正遇到的是异步问题。打开数据库是异步的,您必须解决打开数据库,然后创建模型,然后处理路由的问题。在大多数情况下,只要在数据库打开之前不向服务器发送请求,就可以将成员变量移动到更高的作用域。@adeneo-如果我移动成员变量,那么架构将不得不跟随移动,在
数据库中不留任何内容。一旦
块-这可能不是一件坏事,但我不知道。标准是什么?