【问题标题】:Meteor client can't import collection defined in server. Trying to import collection documentsMeteor 客户端无法导入服务器中定义的集合。尝试导入收集文件
【发布时间】:2017-03-17 17:17:14
【问题描述】:

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

我有定义集合并将其发布到客户端的服务器文件。

服务器文件: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 集合导入客户端?

【问题讨论】:

    标签: meteor collections import publish-subscribe


    【解决方案1】:

    我发现了问题。

    您不能在服务器中定义集合并将它们导出到客户端。解决问题:

    • 我创建了一个 imports/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());
       }
      
    • 诀窍是您需要一个位于服务器和客户端之间的公共目录。您可以将“middle-common”文件夹中的集合导入服务器和客户端

    【讨论】:

    • 你可以把它们放在一个名为“common”的文件夹中——这是由 Meteor 隐式导入到客户端和服务器的。这是仍然很好用的旧方法的一部分:)
    猜你喜欢
    • 2015-05-14
    • 2018-02-03
    • 1970-01-01
    • 2017-08-23
    • 1970-01-01
    • 2015-04-28
    • 2015-08-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多