Javascript Mongoose进口车型赢得';行不通

Javascript Mongoose进口车型赢得';行不通,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,当我在使用模式和模型的同一个文件中定义它们时,一切都很正常 然而,如果我像在网上看到的所有例子一样导入它们:像这样 index.js var mongoose = require('mongoose'); var User = require('./../models/user'); mongoose.connect('mongodb://localhost/demo_database', function(){ var user = new User({...}); }); var

当我在使用模式和模型的同一个文件中定义它们时,一切都很正常

然而,如果我像在网上看到的所有例子一样导入它们:像这样

index.js

var mongoose = require('mongoose');
var User = require('./../models/user');

mongoose.connect('mongodb://localhost/demo_database', function(){
    var user = new User({...});
});
var mongoose = require('mongoose');

var UserSch = new mongoose.Schema({
    ...
});

module.exports = mongoose.model('user', UserSch);
var mongoose = require('mongoose');
var User = require('./../models/user')(mongoose);

mongoose.connect('mongodb://localhost/demo_database', function(){
    var user = new User({...});
});
module.exports = function(mongoose) {

    var UserSch = new mongoose.Schema({
        ...
    });

    return mongoose.model('user', UserSch);
}
var mongoose = require('mongoose');
mongoose .connect(connectionString)
var mongoDb = mongoose.connection

mongoDb.on('error', () => {
  server.log('error', `Unable to connect to database: ${config.database.connectionString}`)
})

mongoDb.once('open', () => {
  server.log('info', `Connected to database: ${config.database.connectionString}`)
})


// Load all Mongoose models
require('./../models/user');

//Using Model
var userModel = mongoose.model('user');

userModel.findOne({ _id: "id..." })
var mongoose = require('mongoose');

var UserSch = new mongoose.Schema({
    ...
});

module.exports = mongoose.model('user', UserSch);
user.js

var mongoose = require('mongoose');
var User = require('./../models/user');

mongoose.connect('mongodb://localhost/demo_database', function(){
    var user = new User({...});
});
var mongoose = require('mongoose');

var UserSch = new mongoose.Schema({
    ...
});

module.exports = mongoose.model('user', UserSch);
var mongoose = require('mongoose');
var User = require('./../models/user')(mongoose);

mongoose.connect('mongodb://localhost/demo_database', function(){
    var user = new User({...});
});
module.exports = function(mongoose) {

    var UserSch = new mongoose.Schema({
        ...
    });

    return mongoose.model('user', UserSch);
}
var mongoose = require('mongoose');
mongoose .connect(connectionString)
var mongoDb = mongoose.connection

mongoDb.on('error', () => {
  server.log('error', `Unable to connect to database: ${config.database.connectionString}`)
})

mongoDb.once('open', () => {
  server.log('info', `Connected to database: ${config.database.connectionString}`)
})


// Load all Mongoose models
require('./../models/user');

//Using Model
var userModel = mongoose.model('user');

userModel.findOne({ _id: "id..." })
var mongoose = require('mongoose');

var UserSch = new mongoose.Schema({
    ...
});

module.exports = mongoose.model('user', UserSch);
…然后,我在index.js中的任何用户实例上运行的任何函数都将挂起

我通过如下方式将mongoose变量传递给user.js来解决这个问题

index.js

var mongoose = require('mongoose');
var User = require('./../models/user');

mongoose.connect('mongodb://localhost/demo_database', function(){
    var user = new User({...});
});
var mongoose = require('mongoose');

var UserSch = new mongoose.Schema({
    ...
});

module.exports = mongoose.model('user', UserSch);
var mongoose = require('mongoose');
var User = require('./../models/user')(mongoose);

mongoose.connect('mongodb://localhost/demo_database', function(){
    var user = new User({...});
});
module.exports = function(mongoose) {

    var UserSch = new mongoose.Schema({
        ...
    });

    return mongoose.model('user', UserSch);
}
var mongoose = require('mongoose');
mongoose .connect(connectionString)
var mongoDb = mongoose.connection

mongoDb.on('error', () => {
  server.log('error', `Unable to connect to database: ${config.database.connectionString}`)
})

mongoDb.once('open', () => {
  server.log('info', `Connected to database: ${config.database.connectionString}`)
})


// Load all Mongoose models
require('./../models/user');

//Using Model
var userModel = mongoose.model('user');

userModel.findOne({ _id: "id..." })
var mongoose = require('mongoose');

var UserSch = new mongoose.Schema({
    ...
});

module.exports = mongoose.model('user', UserSch);
user.js

var mongoose = require('mongoose');
var User = require('./../models/user');

mongoose.connect('mongodb://localhost/demo_database', function(){
    var user = new User({...});
});
var mongoose = require('mongoose');

var UserSch = new mongoose.Schema({
    ...
});

module.exports = mongoose.model('user', UserSch);
var mongoose = require('mongoose');
var User = require('./../models/user')(mongoose);

mongoose.connect('mongodb://localhost/demo_database', function(){
    var user = new User({...});
});
module.exports = function(mongoose) {

    var UserSch = new mongoose.Schema({
        ...
    });

    return mongoose.model('user', UserSch);
}
var mongoose = require('mongoose');
mongoose .connect(connectionString)
var mongoDb = mongoose.connection

mongoDb.on('error', () => {
  server.log('error', `Unable to connect to database: ${config.database.connectionString}`)
})

mongoDb.once('open', () => {
  server.log('info', `Connected to database: ${config.database.connectionString}`)
})


// Load all Mongoose models
require('./../models/user');

//Using Model
var userModel = mongoose.model('user');

userModel.findOne({ _id: "id..." })
var mongoose = require('mongoose');

var UserSch = new mongoose.Schema({
    ...
});

module.exports = mongoose.model('user', UserSch);
为什么我必须这么做,而我看到的所有例子,不是吗

谢谢

其他信息

如果我将user.js移动到与index.js相同的文件夹中,并执行
var user=require('./user')
,则一切正常。

尝试此代码

index.js

var mongoose = require('mongoose');
var User = require('./../models/user');

mongoose.connect('mongodb://localhost/demo_database', function(){
    var user = new User({...});
});
var mongoose = require('mongoose');

var UserSch = new mongoose.Schema({
    ...
});

module.exports = mongoose.model('user', UserSch);
var mongoose = require('mongoose');
var User = require('./../models/user')(mongoose);

mongoose.connect('mongodb://localhost/demo_database', function(){
    var user = new User({...});
});
module.exports = function(mongoose) {

    var UserSch = new mongoose.Schema({
        ...
    });

    return mongoose.model('user', UserSch);
}
var mongoose = require('mongoose');
mongoose .connect(connectionString)
var mongoDb = mongoose.connection

mongoDb.on('error', () => {
  server.log('error', `Unable to connect to database: ${config.database.connectionString}`)
})

mongoDb.once('open', () => {
  server.log('info', `Connected to database: ${config.database.connectionString}`)
})


// Load all Mongoose models
require('./../models/user');

//Using Model
var userModel = mongoose.model('user');

userModel.findOne({ _id: "id..." })
var mongoose = require('mongoose');

var UserSch = new mongoose.Schema({
    ...
});

module.exports = mongoose.model('user', UserSch);
User.js

var mongoose = require('mongoose');
var User = require('./../models/user');

mongoose.connect('mongodb://localhost/demo_database', function(){
    var user = new User({...});
});
var mongoose = require('mongoose');

var UserSch = new mongoose.Schema({
    ...
});

module.exports = mongoose.model('user', UserSch);
var mongoose = require('mongoose');
var User = require('./../models/user')(mongoose);

mongoose.connect('mongodb://localhost/demo_database', function(){
    var user = new User({...});
});
module.exports = function(mongoose) {

    var UserSch = new mongoose.Schema({
        ...
    });

    return mongoose.model('user', UserSch);
}
var mongoose = require('mongoose');
mongoose .connect(connectionString)
var mongoDb = mongoose.connection

mongoDb.on('error', () => {
  server.log('error', `Unable to connect to database: ${config.database.connectionString}`)
})

mongoDb.once('open', () => {
  server.log('info', `Connected to database: ${config.database.connectionString}`)
})


// Load all Mongoose models
require('./../models/user');

//Using Model
var userModel = mongoose.model('user');

userModel.findOne({ _id: "id..." })
var mongoose = require('mongoose');

var UserSch = new mongoose.Schema({
    ...
});

module.exports = mongoose.model('user', UserSch);

首先你需要连接猫鼬!看看我的例子:@MarcoTalento我是,为了简洁起见,我把这部分从这篇文章中删去了。就像我说的,当所有文件都在同一个文件中时,它就工作了。但是当导入模型时,我可以在mongodb日志中看到连接,但是从不调用.find或.save回调,脚本挂起。@MarcoTalento我编辑了这篇文章,以显示调用mongoose.connect()的位置,所以基本上你在这里做的是在将模型导入index.js之前移动连接?