У меня есть node app
, который использует 2 базы данных. Один - это 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
, процесс заполнения возвращает 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? Спасибо.