调用Meteor方法导致内部服务器错误[500]

时间:2017-05-09 07:47:31

标签: javascript meteor

我正在从main.js(服务器)调用我的方法然后我在main.js(客户端)上使用了Meteor.call()然后我收到了一个内部错误[500]

这是我的文件结构

enter image description here

这是控制台错误

enter image description here

main.js(的客户端):

import Tasks from '../imports/api/task.js';
import './main.html';

Template.tasks.helpers({
    tasks() {
        return Tasks.find({},{sort: {createdAt: -1}})
    }
});

Template.tasks.events({
    'submit .add-task': function(event){
        var name = event.target.name.value;
        Meteor.call('addTask', name);


        return false;
    },
    'click .delete-task': function(event){
        if(confirm('Delete Task?')){
            Meteor.call('deleteTask', this._id)
        }

    }
});

main.js(服务器):

import { Meteor } from 'meteor/meteor';
import '../imports/api/task.js';


Meteor.startup(() => {
  // code to run on server at startup
    Meteor.methods({
        addTask: function(name){
            if(!Meteor.userId()){
                throw new Meteor.Error('Access Denied');
            }
            Tasks.insert({
                name: name,
                createdAt: new Date(),
                userId: Meteor.userId()
            });
        },
        deleteTask: function(taskId){
            Tasks.remove(taskId);
        }
    });

});

2 个答案:

答案 0 :(得分:1)

您只需要在服务器端定义方法。

Meteor.startup(() => {
  // code to run on server at startup
    if(Meteor.isServer){
        Meteor.methods({
            addTask: function(name){
                if(!Meteor.userId()){
                    throw new Meteor.Error('Access Denied');
                }
                Tasks.insert({
                    name: name,
                    createdAt: new Date(),
                    userId: Meteor.userId()
                });
            },
            deleteTask: function(taskId){
                Tasks.remove(taskId);
            }
        });
    }
});

答案 1 :(得分:1)

好的我已经找到了答案,虽然在main.js(服务器端)中执行import '../imports/api/task.js';将包含其中的所有变量,答案是我需要这个import Tasks from '../imports/api/task.js';有人可以解释这些差异吗?