调用流星方法导致内部服务器错误[500]
问题描述:
我从main.js(服务器)调用我的方法,然后我在main.js(客户端)上使用Meteor.call(),然后我收到一个内部错误[500 ]调用流星方法导致内部服务器错误[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);
}
});
}
});
答
好吧,我已经找到了答案,我虽然在做main.js import '../imports/api/task.js';
(服务器端)将包括它里面所有的变量,得到的回答是,我需要这个import Tasks from '../imports/api/task.js';
有人可以解释区别在哪里?
服务器控制台中的错误是什么? – tomsp
@tomsp任务未定义。我添加了控制台错误屏幕截图 – Makopa
@tomsp感谢兄弟我专注于查看console.log错误。我没有注意到服务器控制台错误 – Makopa