Meteor客户端无法导入服务器中定义的集合。尝试导入收集文档

时间:2016-11-03 23:42:56

标签: meteor collections import publish-subscribe

在客户端上,我正在尝试从服务器中定义的集合中控制.log文档。

我有一个服务器文件,它定义并向客户发布一个集合。

服务器文件:server / main.js

const Translations = new Mongo.Collection('translations');

Meteor.startup(function () {
    Meteor.publish('translationsChannel', function () {
     return Translations.find();
    });
});

module.exports = Translations;

客户端文件:client / main.js

然后我导入Translations集合并在客户端订阅'translationsChannel'。

import Translations     from '../../server/main.js';
const translationsSub = Meteor.subscribe("translationsChannel");

if (translationsSub.ready()) {
  console.log('Translations: ', Translations.find().fetch());
}

问题:客户端无法成功导入翻译

为什么我不能将Translations集合导入客户端?

1 个答案:

答案 0 :(得分:2)

我发现了问题。

您无法在服务器中定义集合并将其导出到客户端。解决问题:

  • 我创建了一个import / collections.js文件,用于定义Translation集合并将其导出。

    const Translations = new Mongo.Collection('translations');
    
    Translations.schema = new SimpleSchema({
      userId: {type: String},
      fromLanguage: {type: String},
      fromText: {type: String},
      toLanguage: {type: String},
      toText: {type: String},
    });
    
    module.exports = Translations;
    
  • 然后我在我的server / main.js文件中导入翻译

    import Translations from '../imports/collections.js'
    
    Meteor.startup(function () {
      Meteor.publish('translationsChannel', function () {
       return Translations.find();
      });
    })
    
  • 然后我在client / main.js文件中导入翻译

     import Translations from '../imports/collections.js';
     const translationsSub = Meteor.subscribe("translationsChannel");
    
     if (translationsSub.ready()) {
       console.log('Translations: ', Translations.find().fetch());
     }
    
  • 技巧是你需要服务器和客户端之间的公共目录。您可以从'中间常见'中导入集合。文件夹到服务器和客户端