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;
我正在访问其他文件中的exposedUser
变量
但是,我根据文档将文件更改为:
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);
});
};
我在看这个:。它说“让我们假设下面的所有代码都在这个回调中”,然后定义模式。通过一个示例来说明一个概念,我认为在实际应用程序中这样做是不可取的。