簡體   English   中英

調用流星方法會導致內部服務器錯誤[500]

[英]invoking Meteor methods cause internal server error[500]

我從main.js(server)調用方法,然后在main.js(client)上使用Meteor.call(),然后收到內部錯誤[500]

這是我的文件結構

在此處輸入圖片說明

這是控制台錯誤

在此處輸入圖片說明

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

});

您只需要在服務器端定義方法。

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

好的,我已經找到答案了,盡管我執行import '../imports/api/task.js'; 在main.js(服務器端)中將包含其中的所有變量,答案是我需要import Tasks from '../imports/api/task.js'; 有人可以解釋差異嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM