Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Meteor.call调用方法时返回错误';添加菜单';:内部服务器错误[500]_Javascript_Meteor - Fatal编程技术网

Javascript Meteor.call调用方法时返回错误';添加菜单';:内部服务器错误[500]

Javascript Meteor.call调用方法时返回错误';添加菜单';:内部服务器错误[500],javascript,meteor,Javascript,Meteor,我是Meteor的新手,正在尝试使用Meteor.call()将对象推送到集合中的数组中。这是我的密码 我的模板事件映射 'click .save': function (event, template) { var mealId = Session.get('selected'); var category = template.find(".category").value; var dish = template.find(".dish").value; if (category.len

我是Meteor的新手,正在尝试使用Meteor.call()将对象推送到集合中的数组中。这是我的密码

我的模板事件映射

'click .save': function (event, template) {
var mealId = Session.get('selected');
var category = template.find(".category").value;
var dish = template.find(".dish").value;
 if (category.length && dish.length) {
  addToMenu({
    category: category,
    dish: dish
  });
共享文件夹中的my model.js

addToMenu = function(options) {
var id = Random.id();
Meteor.call('addToMenu',_.extend({ _id: id}, options));
return id;
};

Meteor.methods({
createMeal: function(options) {
check(options, {
  date: String,
  time: String,
  street: String,
  city: String,
  state: String,
  zipcode: String,
  _id: Match.Optional(String)
});

if (options.street.length > 100)
  throw new Meteor.Error(413, 'Street address too long');
if (options.city.length > 25)
  throw new Meteor.Error(413, 'City name too long');
if (options.state.length > 20)
  throw new Meteor.Error(413, 'State name too long');
if (! this.userId)
  throw new Meteor.Error(403, 'You must be logged in');

var id = options.id || Random.id();
Meals.insert({
  _id: id,
  owner: this.userId,
  street: options.street,
  city: options.city,
  state: options.state,
  zipcode: options.zipcode,
  date: options.date,
  time: options.time,
  menu: [],
  ingredients: [],
  invited: [],
  rsvps: []
});
return id;
},



addToMenu: function(options) {
check(options, {
  category: String,
  dish: String,
  _id: Match.Optional(String)
});
if (! this.userId)
  throw new Meteor.Error(403, "You must be logged in to add dishes.");
if (! mealId)
  throw new Meteor.Error(404, "No such meal");
Meals.update(mealId, {$addToSet: {menu: {category: options.category, dish:
options.dish}}});
},

我本可以创建一个名为Menu和set{owner:mealId}的相关集合,但我真的很想在MongoDB上运行这个嵌入文档的练习。任何输入都将不胜感激。

我猜问题在于
addToMenu
方法的作用域中没有
mealId
变量。您可能打算将其作为参数传递:

Meteor.methods({
  addToMenu: function(mealId, options) {
    check(mealId, String);
    // rest of function body unchanged
  }
});

addToMenu = function(mealId, options) {
  var id = Random.id();
  Meteor.call('addToMenu', mealId, _.extend({ _id: id}, options));
  return id;
};

'click .save': function (event, template) {
  var mealId = Session.get('selected');
  var category = template.find(".category").value;
  var dish = template.find(".dish").value;
  if (category.length && dish.length) {
    addToMenu(mealId, {category: category, dish: dish});
  }
}

当您尝试此操作时,您在服务器端控制台上得到了什么?它说mealId没有定义。甚至都没想过看一下服务器控制台。谢谢,就是这样!谢谢你的关注,我非常感谢。