2017-02-09 64 views
2

Accounts.onCreateUserが実行されても、私は新しいコレクション 'profile'を作成しようとしていますが、私はReferenceErrorを取得しています:プロファイルが定義されていません。私はそれが負荷の順序問題であると仮定します。私がスキーマファイルをlibフォルダに移動すると動作しますが、現在Meteorサイトで推奨されているファイル構造を使用しようとしています。ReferenceError:定義されていません

いくつか私に紛失していることを教えてもらえますか?私は輸入して輸出することに新しいので、それに関連する可能性があります。

パス:imports/profile/profile.js

import { Mongo } from 'meteor/mongo'; 
import { SimpleSchema } from 'meteor/aldeed:simple-schema'; 


SimpleSchema.debug = true; 


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); 

パス:あなたのcreateUserファイルでserver/userRegistration/createUser.js

Meteor.startup(function() { 

    console.log('Running server startup code...'); 

    Accounts.onCreateUser(function (options, user) { 

    if (options.profile && options.profile.roles) { 
     Roles.setRolesOnUserObj(user, options.profile.roles); 

     Profile.insert({ 
     userId: user._id, 
     firstName: options.profile.firstName, 
     familyName: options.profile.familyName, 
     }); 
    } 

    if (options.profile) { 
     // include the user profile 
     user.profile = options.profile; 
    } 

    return user; 
    }); 
}); 

答えて

3

は、[プロファイルのコレクションをインポートする必要があります。 importsディレクトリ内のファイルはMeteorによって自動的にロードされないので、いつでもそれらをインポートする必要があります。これは、ファイルが/libディレクトリにあり、/importsディレクトリにないときに動作している理由です。

あなたのcreateUser.jsファイルでコレクションをインポートし、次のコードで問題を解決することができます:私はあなたがコレクションの定義をエクスポートしていなかったことを発見しませんでした

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

EDIT

。コレクション定義をエクスポートして、別の場所にインポートできるようにする必要があります。これを指摘してくれたMichel Floydに感謝します。あなたは、次のようにコードを修正することではないこと:

export const Profile = new Mongo.Collection('profile'); 
+0

「ATCreateUserServer」TypeError例外をメソッドを呼び出している間、私は今、 '例外を取得しています:プロパティを読み取ることができませんundefined' – bp123

+1

の「挿入」彼は、プロファイルをエクスポートする必要はありません'profile.js'からも? –

+0

@MichelFloydあなたはまったく正しいです、私は彼がそれを輸出していないことに気づいていませんでした。更新されます。ありがとう – Sean

関連する問題