2017-07-04 3 views
0

J'ai 2 applications qui interrogent la même base de données, elles ont toutes deux créé des collections diff sur un db. App A à myapp:3000 créé une collection comments tandis que l'application B au myapp:3300 a créé courses à sa fin dans le même DB (school). les deux serveurs sont en cours d'exécution, comment puis-je interroger une collection créée par l'application A dans l'application B? Ma raison de poser cette question est que, en tant que débutant, il est facile pour moi d'interroger la nouvelle collection créée dans une application en utilisant la variable globale. Disons que je créé UsesList = new Mongo.Collection('useslist');, il est possible pour moi de publier cette façon:Collection Queriyng créée par une application dans une autre application Meteor js

Meteor.publish('UsesList', function() { 
     if (!this.userId) { 
      return false; 
      throw new Meteor.Error('Not authorized'); 
     }else{ 
      return UsesList.find(); 
     } 
    }); 

Depuis que je ne voudrais pas avoir accès à cette variable, et je pense que l'accès au db directement à interroger la collection pourrait être contraire à l'éthique. S'il vous plaît, j'ai besoin de vos conseils professionnels sur la meilleure façon de s'y prendre. Merci.

+0

sont à la fois des applications utilisant la même instance mongo db/cluster comme back-end? – Jankapunkt

Répondre

1

Aucun problème pour "créer" la même collection dans deux applications différentes.

L'identité de collection est déterminée par la chaîne de nom que vous fournissez au constructeur de la collection, et l'identité de la base de données elle-même, bien sûr.

Vous pouvez les affecter à l'identifiant de variable que vous voulez, et ils peuvent être différents entre les applications. Cependant, je vous recommande de commencer à utiliser les modules ES6 et de réduire la pollution globale des espaces de noms. Commencez à utiliser les meilleures pratiques lorsque vous apprenez, afin de ne plus avoir à désapprendre les mauvaises.

Ainsi, pourvu que les deux applications sont connectés au même DB:

// same in app 1 and app 2 
import { Mongo } from 'meteor/mongo'; 
export const UsesList = new Mongo.Collection('user_list'); 

// and importing it 
import { UserList } from '../path/to/other/file'; 
+0

J'ai lu que cette fonctionnalité fonctionne pour 'Meteor version 1.3 +', je suis sur la version '1.2.1', et j'ai peur de mettre à jour afin de ne pas casser les choses, cela n'a pas fonctionné. Toute autre suggestion en ce qui concerne la version 1.2.1. Merci pour cette grande aide – kehinde

+1

Donc le faire sans les fonctionnalités des modules. Il suffit de le définir de la même manière dans les deux applications. L'as tu essayé? Si cela ne fonctionne pas, êtes-vous sûr que la * même * DB est effectivement utilisée? Bien sûr, deux bases de données locales portant le même nom sur des machines différentes ne fonctionneront pas. – MasterAM