Node.js 为什么在使用mongoose.connect连接到数据库时不导入模型?

Node.js 为什么在使用mongoose.connect连接到数据库时不导入模型?,node.js,mongoose,Node.js,Mongoose,当我使用以下代码连接到MongoDb实例时 var MongoDbConnection = null; var databaseUrl = "xxxxx"; mongoose.connect(databaseUrl); mongoose.connection.once('open', onDatabaseConnectionOpen); mongoose.connection.on('error', onDatabaseConnectionError); function onDatabas

当我使用以下代码连接到MongoDb实例时

var MongoDbConnection = null;
var databaseUrl = "xxxxx";

mongoose.connect(databaseUrl);
mongoose.connection.once('open', onDatabaseConnectionOpen);
mongoose.connection.on('error', onDatabaseConnectionError);

function onDatabaseConnectionOpen() {
    MongoDbConnection = mongoose.connection;
    console.log(mongoose);
    console.log(mongoose.connection);
}

function onDatabaseConnectionError(err) {
    console.log("Error connecting to MongoDb database");
    console.log(err);

}
mongoose
中的
models
属性是空对象
{}

架构和模型已在不同的存储库中初始化。我的期望是,通过连接到数据库,我也能够获取模型(对数据库进行进一步查询)

当我在代码开头添加以下行时

const Model1 = require('./models/Model1.js')
const Model2 = require('./models/Model2.js')
const Model3 = require('./models/Model3.js')
const Model4 = require('./models/Model4.js')
相应的模型和模式显示在
mongoose.connection
对象中

Model1.js示例

var mongoose        =   require('mongoose');
var Schema          =   mongoose.Schema;

var model1Schema = new Schema({

    prop1: String,
    prop2: String,
    prop3: String

});

module.exports = mongoose.model('model1', model1Schema);

当我使用
mongoose.connect
连接到数据库时,是否有方法加载模型和模式?或者我是否需要此文件中的模型来进行数据库查询?

MongoDB是一个无模式的数据库,mongoose允许您在应用程序层实现模式,所以是的,您需要包含mongoose的模式定义才能使用它们。@Sven我正在将此代码从Python移植到Nodejs。但我在Python中使用PyMongo时没有这个问题。我不必在那里包含模式定义,并且能够对各个集合进行查询。你知道为什么在行为上会有差异吗?你使用的是Mongoose,它是官方驱动程序的模式包装器。因为MongoDB是一个无模式的数据库,所以Mongoose需要模式定义。如果改用原始驱动程序,则可以查询它
db.collection('myCollection')。查找(…)
。我建议不要使用Mongoose,因为它是没有模式的数据库的应用层模式实现。如果您的应用程序需要架构,您应该使用强制架构的数据库(pgsql、mysql等)。谢谢@Sven。明白你的意思了。关于使用Mongoose,我仍处于我正在构建的应用程序的早期阶段,因此我不确定需要建立的确切模式。假设在关系数据库中对模式进行更改会更加困难,我暂时使用mongoDb和mongoose