我已经阅读了几篇stackoverflow文档和mongoose文档,涉及mongoose.connect()和mongoose.createConnection(),但似乎没有明确说明后者的内容,特别是在哪里建立连接。我不确定在哪个位置最好建立mongoose或任何数据库连接,但通常我会在我的server.js文件中进行连接。
在模型本身中建立连接是否可以?当使用mongoose.createConnection()时,似乎在模型中建立连接是唯一的选择,因为如果我在server文件中使用createConnection建立连接,则无法导出返回的连接对象并在模型文件中导入它。
当我只使用mongoose.connect()时,通常会在我的server文件中设置。
但是正如我之前所述,如果我改变上面的代码并使用
在模型本身中建立连接是否可以?当使用mongoose.createConnection()时,似乎在模型中建立连接是唯一的选择,因为如果我在server文件中使用createConnection建立连接,则无法导出返回的连接对象并在模型文件中导入它。
当我只使用mongoose.connect()时,通常会在我的server文件中设置。
var databaseUri = "mongodb://localhost/sampledatabse1020";
if (process.env.MONGODB_URI) {
mongoose.connect(process.env.MONGODB_URI);
} else {
mongoose.connect(databaseUri)
}
var database = mongoose.connection;
database.on("error", function(err) {
console.log("Mongoose Error: ", err);
});
database.once("open", function() {
console.log("Mongoose connection successful.");
});
但是正如我之前所述,如果我改变上面的代码并使用
var connection = mongoose.createConnection()
我无法导出保存从mongoose.createConnection()返回的连接对象的connection
变量。所以我必须在模型本身中创建它,例如:
var mongoose = require("mongoose");
var connection = mongoose.createConnection('mongodb://localhost/food');
var Schema = mongoose.Schema;
var UserSchema = new Schema({
first_name: {
type: String,
trim: true,
required: "First Name is Required"
},
last_name: {
type: String,
trim: true,
required: "Last Name is Required"
},
email: {
type: String,
trim: true,
required: "Email is Required"
}
});
var User = connection.model('User', UserSchema);
module.exports = User;
我了解另一种选择是使用单独的文件来进行所有数据库连接,而不是在服务器文件中进行连接。但如果我这样做,如何才能使连接仅在必要时进行呢?
更新: 我将createConnection()添加到模型中,似乎效果很好。然而,我知道在模型内创建连接并不理想,那么我应该在哪里设置createConnection()呢?因为如果它在另一个文件(例如server.js)中定义,我无法导出并在模型中导入它。任何建议都将不胜感激。