2017-02-15 53 views
0

我想更新我的應用程序,以利用Meteors建議的文件結構,我無法將發佈功能與架構文件分開。我想使用的文件結構單獨發佈功能我們的架構和進入服務器/ publications.js

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

如果導入集合&確保您的出版物被導入到你的服務器這應該工作: /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

而且,這個看似複雜,但堅持下去,你很快就會明白!

+0

謝謝。我一定會讀那個tut! – bp123

+0

沒有問題。我的答案是否適合你? – Sean

+0

是的。我錯過了一堆需要的文件。你指出了。謝謝您的幫助。 – bp123