Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.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 在db.open()回调中使用导出-mongoose/express_Javascript_Node.js_Mongodb_Express_Mongoose - Fatal编程技术网

Javascript 在db.open()回调中使用导出-mongoose/express

Javascript 在db.open()回调中使用导出-mongoose/express,javascript,node.js,mongodb,express,mongoose,Javascript,Node.js,Mongodb,Express,Mongoose,我有一个user.js文件: var mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/dbName'); var User = mongoose.model('user', { username: String, password: String }); exports.User = User; 我正在访问其他文件中的exposedUser变量 但是,我根据文档将文件更改为: var mongoos

我有一个
user.js
文件:

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/dbName');

var User = mongoose.model('user', { username: String, password: String });

exports.User = User;
我正在访问其他文件中的exposed
User
变量

但是,我根据文档将文件更改为:

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/dbName');

var db = mongoose.connection;

db.on('error', console.error.bind(console, 'connection error:'));

db.once('open', function callback () {
    console.log('connection open');
    var Schema = mongoose.Schema;

    var User = mongoose.model('user', { username: String, password: String });
    exports.User = User;
});
但是,
User
变量现在在另一个文件中未定义


为什么会这样?我如何将
User
变量公开给其他文件?

我不知道您查看了哪些文档,但我认为这不是组织
Mongoose
模式的好方法。最好在单独的文件中定义模式,然后导出该文件。这里有一个例子:

app.js

var express = require('express');     
var app = express();

app.configure(function () {
    app.use(express.logger('dev'));
    app.use(express.bodyParser());
});

var mongoose = require('mongoose');
mongoose.connect('mongodb:mongoURI');    

var db = mongoose.connection;
var userModel = require('../models/user.js');

db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function callback () {
    // Use userModel  ...
});

var userRoute = require('./routes/users');
app.get('/users/list', userRoute.list);

app.listen(3000);
var mongoose = require('mongoose')
   ,Schema = mongoose.Schema
   ,ObjectId = Schema.ObjectId;

var userSchema = new Schema({
    id : ObjectId,
    name : {type : String, default : ''},
    email : {type : String, default : ''}
});

module.exports = mongoose.model('User', userSchema);
模型/user.js

var express = require('express');     
var app = express();

app.configure(function () {
    app.use(express.logger('dev'));
    app.use(express.bodyParser());
});

var mongoose = require('mongoose');
mongoose.connect('mongodb:mongoURI');    

var db = mongoose.connection;
var userModel = require('../models/user.js');

db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function callback () {
    // Use userModel  ...
});

var userRoute = require('./routes/users');
app.get('/users/list', userRoute.list);

app.listen(3000);
var mongoose = require('mongoose')
   ,Schema = mongoose.Schema
   ,ObjectId = Schema.ObjectId;

var userSchema = new Schema({
    id : ObjectId,
    name : {type : String, default : ''},
    email : {type : String, default : ''}
});

module.exports = mongoose.model('User', userSchema);
路由/users.js

var user = require('../models/user.js');

exports.list = function(req, res) {
    user.find(function(err, users) {
        res.send(users);
    });
}; 

我在看这个:。它说“让我们假设下面的所有代码都在这个回调中”,然后定义模式。通过一个示例来说明一个概念,我认为在实际应用程序中这样做是不可取的。