我试图在登录用户集合中添加网址。我的最终目标至少是能够添加一个字段,例如{profilePicture: 'http://randompic.com/123.png'}
到目前为止,我所尝试的是:
<template name="profile">
<h1>My Profile</h1>
<form class="form-inline"action="">
<label for="url"></label>
<input class="input input-large" type="url" name="url" placeholder="URL for you image..." id="url">
<button class="btn btn-success submit">Update profile picture</button>
</form>
</template>
当用户按下更新个人资料图片按钮时,我将其发送到此帮助程序功能:
Template.profile.events({
'click .submit': function (evt, tmpl) {
var userid = Meteor.userId();
var url = tmpl.find('#url').value;
var options = {_id: userid, profilePicture: url};
Meteor.call('addToProfile', options);
}
});
我试图提醒选项._id和options.profilePicture,我可以使用该数据。 现在,当我将它传递给我的server.js文件时,我没有输出我的警报:
Meteor.methods({
'addToProfile': function(options) {
//Not even this alert will show..
alert(options._id); Edit: console.log() works on the server thought.
}
})
这是我的第一个问题。
第二个问题(即将到来)是我不知道如何使用此profilePicture数据更新/添加到用户集合。如果有人可以通过该部分的一个小例子做出贡献,我将非常感激。
答案 0 :(得分:0)
根据评论,一切似乎都按预期运作。您似乎只是尝试更新客户端上的某些用户数据。由于您删除了insecure
包,因此需要验证服务器上的更新(客户端请求的更新),这就是您要这样做的方式:
// only applies to client requests
Meteor.users.allow({
// validation for user inserts
insert: function ( userId, doc ) {
// perform any checks on data that you want to perform, like checking to see if the current user is an admin.
// this check just requests that a user be logged in
return userId;
}
,
// is your validation for user updates
update: function ( userId, doc, fields, modifier ) {
// again, perform any validation you want. A typical check is to make sure they didn't add any extra fields.
// this makes sure a user is logged in and that they are only attempting to update themself
return userId === doc._id;
}
});
docs中有一些更全面的例子。现在你可以像往常一样调用更新,并依靠服务器来执行任何验证!