2016-04-15 11 views
7

Ich migriere meine Meteor-Anwendung von Meteor 1.2 auf Meteor 1.3 und befolge die Anleitung auf http://guide.meteor.com/methods.html#validated-method, um eine validierte Methode zu erstellen.Meteor validierte Methode nicht gefunden

Wenn ich die Methode aufrufen, glaube ich, clientseitige Simulation passiert, wie ich an der Konsole abmelden kann, aber immer der Fehler Method '...' not found folgt.

/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); 
    }, 
}); 

Client-Konsole

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 

Antwort

9

Ich glaube der Grund, warum das nicht funktionierte, war, dass ich das Javascript beim Start nicht auf dem Server initialisiert habe.

Hinzufügen der folgenden das Problem behoben:

/imports/startup/server/index.js

import './register-api.js'; 

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

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