2016-04-15 13 views
7

私はMeteorアプリケーションをMeteor 1.2からMeteor 1.3にマイグレーションし、http://guide.meteor.com/methods.html#validated-methodのガイドに従ってValidationメソッドを作成しています。メテオの検証済みメソッドが見つかりません

私がこのメソッドを呼び出すと、コンソールにログアウトできるため、クライアント側のシミュレーションが行われていると思いますが、これには常にエラーMethod '...' not foundが続きます。

/imports/ui/pages/register.js

import {Meteor} from 'meteor/meteor'; 
import {Template} from 'meteor/templating'; 
import {FlowRouter} from 'meteor/kadira:flow-router'; 

// Methods 
import {createAccount} from '/imports/api/accounts/methods.js'; 

// HTML 
import './register.html'; 

Template.Register_page.events({ 
    'submit form': function(event) { 
    event.preventDefault(); 

    var user = { 
     email: $('#email').val(), 
     password: $('#password').val(), 
     profile: { 
     firstName: $('#firstName').val(), 
     lastName: $('#lastName').val() 
     } 
    }; 

    createAccount.call(user, function(err) { 
     if (err) { 
     console.error(err); 
     } else { 
     console.log('User successfully registered'); 
     FlowRouter.go('Dashboard'); 
     } 
    }); 
    } 
}); 

/imports/api/accounts/methods.js

import {Meteor} from 'meteor/meteor'; 
import {ValidatedMethod} from 'meteor/mdg:validated-method'; 
import {SimpleSchema} from 'meteor/aldeed:simple-schema'; 
import {Accounts} from 'meteor/accounts-base'; 

export const createAccount = new ValidatedMethod({ 
    name: 'createAccount', 
    validate: new SimpleSchema({ 
    email: { type: String }, 
    password: { type: String }, 
    profile: { type: Object }, 
    "profile.firstName": { type: String }, 
    "profile.lastName": { type: String } 
    }).validator(), 
    run(user) { 
    console.log(user); 
    Accounts.createUser(user); 
    }, 
}); 

クライアントコンソール

Object {email: "[email protected]", password: "testPassw0rd", profile: Object} methods.js:18 
errorClass {error: 404, reason: "Method 'createAccount' not found", details: undefined, message: "Method 'createAccount' not found [404]", errorType: "Meteor.Error"} register.js:28 

答えて

9

私は起動時にサーバー上のjavascriptを初期化していなかったので、これが機能していなかった理由があったと思います。

/imports/startup/server/index.js

import './register-api.js'; 

/imports/startup/server/register-api.js

次の固定の問題を追加する

import '/imports/api/accounts/methods.js';