【发布时间】:2018-03-14 08:10:37
【问题描述】:
我已经阅读了几个关于 mongoose.connect() 和 mongoose.createConnection() 的 stackoverflow 文档和 mongoose 文档,但是对于后者似乎没有明确的解释,特别是在哪里建立连接。我不确定建立猫鼬或任何数据库连接的最佳位置在哪里,但我通常在我的 server.js 文件中进行。
可以在模型本身中建立连接吗?使用 mongoose.createConnection() 时,似乎在模型中建立连接是唯一的选择,因为如果我在服务器文件中使用 createConnection 建立连接,我无法导出返回的连接对象并将其导入我的模型文件中.
当我只使用 mongoose.connect() 时,我通常在我的服务器文件中进行设置,
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 中。任何建议将不胜感激。
【问题讨论】:
标签: node.js database mongodb mongoose