model.save()
使我非常困惑。
示例。我将mongoose.model(mongoose.schema)
移到了单独的model.js
文件中。当我使用这种方法创建模型时,以下内容会困扰我。
保存方法如何找到我与db建立的连接。 如果我有2个mondogDB连接实例,则以秒为单位,它选择哪个实例?
这是架构
const Schema = require("mongoose").Schema;
const mongoose = require("mongoose");
const User = new Schema({
name: String,
password: String,
date_created: {
type: Date,
default: Date.now
},
authorized: {
type: Boolean,
default: false
}
});
module.exports = mongoose.model("User", User);
答案 0 :(得分:1)
因此,mongoose.model()
的输出是一个模型,并且给定的模型始终绑定到一个连接。
默认情况下,大多数人仅使用mongoose.connect()
中提供的连接和连接池。调用完后,缓存的猫鼬模块将在内部使用单例连接对象。因此,例如,如果我正在调用您的模型,则可以这样做:
const mongoose = require('mongoose');
const User = require('./models/user');
mongoose.connect(); // or pass in a custom URL
// from here, User will default to the mongoose-internal connection created in the previous line
如果要使用多个连接,则不能使用猫鼬内部单例,因此必须对创建的连接进行操作。例如:
// ./schemas/user.js
// You now export the Schema rather than the module in your file
//module.exports = mongoose.model('User', User);
module.exports = User;
然后在调用代码中输入
:const config = require('./config'); // presumably this has a couple mongo URLs
const mongoose = require('mongoose');
const UserSchema = require('./schemas/user');
const conn1 = mongoose.createConnection(config.url1);
const conn2 = mongoose.createConnection(config.url2);
const User1 = conn1.model('User', UserSchema);
const User2 = conn2.model('User', UserSchema);
// now any users created with User1 will save to the first db, users created with User2 will save to the second.