Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.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 如何更新嵌套用户集合_Javascript_Mongodb_Meteor - Fatal编程技术网

Javascript 如何更新嵌套用户集合

Javascript 如何更新嵌套用户集合,javascript,mongodb,meteor,Javascript,Mongodb,Meteor,我想弄明白这一点已经有一段时间了,我觉得我什么都试过了 我在users下有一个嵌套的集合,名为details。我在从客户端更新细节字段时没有遇到任何问题,但为了安全起见,我显然希望通过服务器运行更新 这是我的服务器代码: //server code Meteor.methods({ updateProfile : function() { Meteor.users.update({ _id: Meteor.userId() }, { $set: { "details.phoneNum

我想弄明白这一点已经有一段时间了,我觉得我什么都试过了

我在users下有一个嵌套的集合,名为details。我在从客户端更新细节字段时没有遇到任何问题,但为了安全起见,我显然希望通过服务器运行更新

这是我的服务器代码:

//server code
Meteor.methods({
  updateProfile : function() {
    Meteor.users.update({ _id: Meteor.userId() }, { $set: { "details.phoneNumber" : phoneNumber }
    });
  }
});
和我的客户代码:

Template.userEdit.events({
  'submit updateProfile' : function(e, t){
    e.preventDefault();
    var firstName = e.target.phoneNumber;
    Meteor.call('phoneNumber');
  }
 });
目前,我正在发布/订阅整个用户集合:

// Server
Meteor.publish("allUserData", function () {
  return Meteor.users.find();
});

// Client
Tracker.autorun(function () {
  Meteor.subscribe("allUserData");
});

您的服务器方法称为“updateProfile”,但您在客户端上调用“phoneNumber”。在您的案例中,Meteor方法的调用如下所示:

Meteor.call("updateProfile", phoneNumber);
并且您的服务器方法必须接受参数作为输入:

Meteor.methods({
  updateProfile : function(phoneNumber) {
  //...
  }
});

您的服务器方法称为“updateProfile”,但您在客户端调用“phoneNumber”。谢谢!更新代码后,我又遇到了一些问题,但你的回答让我走上了正确的轨道。