猫鼬填充在 2 个数据库中
Mongoose populate across 2 databases
我有一个使用 2 个数据库的 node app
。一个是 Names
,另一个是所有数据的其余部分。
我有这个连接设置:
// DATABASE CONNECTION
var APP_DB_URI = config.APP_DB; // mongodb://localhost:27017/app_db
var app_DB = mongoose.createConnection(APP_DB_URI);
var name_DB = app_DB.useDb(config.NAME_DB); // 'name_db'
此连接工作正常。
将数据保存到 app_db
和 names_db
时也没有问题,工作完美。
但问题是这样的:当我尝试查询 Account
模型然后填充引用的 Name
模型时,填充过程 returns null
.
帐户 架构:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var field = {
email: {type: String, unique: true},
password: {type: String, select: false},
name: {type: Schema.Types.ObjectId, ref: 'Name'},
}
var options = {
id: false,
versionKey: false
}
var schema = new Schema(field, options);
module.exports = mongoose.model('Account', schema);
名称 架构:
'use strict';
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var field = {
firstName: {type: String, required: true},
middleName: {type: String, required: true},
lastName: {type: String, required: true},
suffix: {type: String, required: false,},
}
var options = {
id: false,
versionKey: false
}
var schema = new Schema(field, options);
module.exports = mongoose.model('Name', schema);
查询及人口:
var app_db = *app_db instance passed to this controller*
var Account = app_db.model('Account');
Account.findOne({email:req.body.email})
.populate('name')
.exec(function (err, user) {
if(user){
// user.name returns null
}
})
有没有一种特殊的方法可以将 db1 的数据填充到 db2 的数据?谢谢。
Populate Mongo documents across databases feature added since mongoose v3.9.0
. Per this across db populate test,当调用 model
时,您应该使用不同的数据库名称。一些示例代码如下。更多详情请参考link.
中的测试代码
var app_DB = mongoose.createConnection(APP_DB_URI);
var name_DB = app_DB.useDb(config.NAME_DB); // 'name_db'
// ...
module.exports = app_DB.model('Account', schema);
// ...
module.exports = name_DB.model('Name', schema);
填充
.populate('name', '', Name)
我有一个使用 2 个数据库的 node app
。一个是 Names
,另一个是所有数据的其余部分。
我有这个连接设置:
// DATABASE CONNECTION
var APP_DB_URI = config.APP_DB; // mongodb://localhost:27017/app_db
var app_DB = mongoose.createConnection(APP_DB_URI);
var name_DB = app_DB.useDb(config.NAME_DB); // 'name_db'
此连接工作正常。
将数据保存到 app_db
和 names_db
时也没有问题,工作完美。
但问题是这样的:当我尝试查询 Account
模型然后填充引用的 Name
模型时,填充过程 returns null
.
帐户 架构:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var field = {
email: {type: String, unique: true},
password: {type: String, select: false},
name: {type: Schema.Types.ObjectId, ref: 'Name'},
}
var options = {
id: false,
versionKey: false
}
var schema = new Schema(field, options);
module.exports = mongoose.model('Account', schema);
名称 架构:
'use strict';
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var field = {
firstName: {type: String, required: true},
middleName: {type: String, required: true},
lastName: {type: String, required: true},
suffix: {type: String, required: false,},
}
var options = {
id: false,
versionKey: false
}
var schema = new Schema(field, options);
module.exports = mongoose.model('Name', schema);
查询及人口:
var app_db = *app_db instance passed to this controller*
var Account = app_db.model('Account');
Account.findOne({email:req.body.email})
.populate('name')
.exec(function (err, user) {
if(user){
// user.name returns null
}
})
有没有一种特殊的方法可以将 db1 的数据填充到 db2 的数据?谢谢。
Populate Mongo documents across databases feature added since mongoose v3.9.0
. Per this across db populate test,当调用 model
时,您应该使用不同的数据库名称。一些示例代码如下。更多详情请参考link.
var app_DB = mongoose.createConnection(APP_DB_URI);
var name_DB = app_DB.useDb(config.NAME_DB); // 'name_db'
// ...
module.exports = app_DB.model('Account', schema);
// ...
module.exports = name_DB.model('Name', schema);
填充
.populate('name', '', Name)