Mongoose peupler à travers 2 bases de données

J’ai une node app qui utilise 2 bases de données. L’un est le Names et l’autre pour le rest de toutes les données.

J’ai cette configuration de connexion:

 // 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' 

Cette connexion fonctionne correctement.

Il n’y a également aucun problème lors de la sauvegarde des données à la fois dans app_db et names_db .

Mais le problème est le suivant: lorsque j’essaie d’interroger le système de Account , puis de renseigner le modèle de Name référencé, le processus de null renvoie la valeur null .

Schéma de compte :

  var mongoose = require('mongoose'); var Schema = mongoose.Schema; var field = { email: {type: Ssortingng, unique: true}, password: {type: Ssortingng, 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); 

Nom du schéma:

  'use ssortingct'; var mongoose = require('mongoose'); var Schema = mongoose.Schema; var field = { firstName: {type: Ssortingng, required: true}, middleName: {type: Ssortingng, required: true}, lastName: {type: Ssortingng, required: true}, suffix: {type: Ssortingng, required: false,}, } var options = { id: false, versionKey: false } var schema = new Schema(field, options); module.exports = mongoose.model('Name', schema); 

La requête et la population:

 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 } }) 

Existe-t-il un moyen spécial de renseigner les données de db1 sur celles de db2? Merci.

Remplir des documents Mongo à travers des bases de données ajouté depuis mongoose v3.9.0 . Selon ce test de remplissage de firebase database , vous devez utiliser un nom de firebase database différent lorsque le model est appelé. Quelques exemples de codes ci-dessous. Plus de détails s’il vous plaît se référer aux codes de test dans le lien.

 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); 

Peupler

 .populate('name', '', Name)