单独发布schema的函数和server / publications.js

时间:2017-02-15 09:24:39

标签: meteor meteor-blaze simple-schema

我试图更新我的应用程序以利用Meteors建议的文件结构,并且我在将发布功能与模式文件分离时遇到问题。我尝试使用的文件结构是

imports/
  api/
    profile/                     
      server/
        publications.js
      Profile.js  

当我将发布功能组合到Profile.js模式文件中时,发布功能起作用,数据流入客户端,但是当我将它们分开时,我无法将其发布。有人可以告诉我如何正确分离发布功能和架构。

路径:imports/api/profile/Profile.js

import { Mongo } from 'meteor/mongo';
import { SimpleSchema } from 'meteor/aldeed:simple-schema';
import { AddressSchema } from '../../api/profile/AddressSchema.js';
import { ContactNumberSchema } from '../../api/profile/ContactNumberSchema.js';

export const Profile = new Mongo.Collection("profile");

Profile.allow({
  insert: function(userId, doc) {
    return !!userId;
  },
  update: function(userId, doc) {
    return !!userId;
  },
  remove: function(userId, doc) {
    return !!userId;
  }
});

var Schemas = {};

Schemas.Profile = new SimpleSchema({
  userId: {
    type: String,
    optional: true
  },
  firstName: {
    type: String,
    optional: false,
  },
  familyName: {
    type: String,
    optional: false
  }
});

Profile.attachSchema(Schemas.Profile);

if (Meteor.isServer) {
  Meteor.publish('private.profile', function() {
    return Profile.find({});
  });
}

路径:client/main.js

Template.main.onCreated(function() {
    this.autorun(() => {
        this.subscribe('private.profile');
    });
});

1 个答案:

答案 0 :(得分:1)

如果您导入集合&确保将您的出版物导入您的服务器:

路径:/imports/api/profile/server/publications.js

import { Profile } from '/imports/api/profile/profile';

Meteor.publish('private.profile', function() {
    return Profile.find({});
});

您还需要确保将出版物文件导入服务器。除非将/imports目录中的文件导入服务器,否则不会加载它们。我们这样做的方法是将所有出版物和方法等导入我们/imports/startup/server目录中的文件,然后将该文件导入实际的流星服务器。

因此您需要导入/imports/startup/server/index.js文件

中的出版物

路径:/imports/startup/server/index.js

import '/imports/api/profile/server/publications';

最后,您需要确保将startup/server/index.js导入服务器

路径:/server/main.js

import '/imports/startup/server';

如果这让您感到困惑,我建议您阅读TheMeteorChef关于导入目录的精彩文章:https://themeteorchef.com/tutorials/understanding-the-imports-directory

此外,这可能看起来很复杂,但坚持下去,你很快就能理解它!