我希望我的应用程序能够让用户与另一个用户成为朋友。发送好友请求,然后另一个人可以选择是否接受。我希望有两个不同的列表,第一个列表是用户朋友,第二个列表是向他或她发送朋友请求的人。目前我有一个朋友收藏:
Friends = new Meteor.Collection("friends");
我创造朋友的方式是:
Template.friend.events({
'click #addFriend': function(e, t) {
var email = $("#friendEmail").val();
var friend = Meteor.users.find({ "email.address" : email });
if (friend) {
return Friends.insert({friend1:Meteor.userId(),
friend2:friend._id,
name: email,
stat: 'Pending'});
}
}
});
现在我有点陷入困境,我现在有一个模板来检索朋友:
Template.friend.friends = function () {
return Friends.find({friend1: Meteor.userId()});
}
然后我的html:
{{#each friends}}
<div class="row">
<div class="... columns">
<p>{{name}} {{stat}}</p>
<div class="... columns">
<p>{{name}} {{stat}}</p>
</div>
</div>
{{/each}}
渲染好友。
但问题是:如何确保朋友2可以接受任何请求,以及如何创建两个单独的列?更重要的是,我觉得这是一种不正确的做事方式,我是否应该以这种方式接近它?
编辑:
我已经摆脱了Friends
集合并按照凤凰协议制作了一个Notifications
集合,我创建了以下内容来测试它是否可行:
Template.friends.sent = function() {
return Notifications.find({from: Meteor.user(),
type: "friendship"
});
}
使用以下html:
{#each sent}
<p>{{to.emails.0.address}}</p>
{/each}
但它返回错误说:
Expected IDENTIFIER
答案 0 :(得分:3)
保留两个集合:
Meteor.users
和Notifications
当您发送好友请求时,请在Notifications
,type : friendship
,status : pending
,from : user1
和to : user2
上注册。
然后,在用户配置文件中,您可以查询user2的待处理通知,无论他们是谁。如果user2接受,则在集合Meteor.users
上为user1注册。处理完请求后,无论是否接受,您都可以删除该通知。
事实上,我甚至可以从集合status
中取出属性Notificationts
,因为在这种方法中,无论如何都可以删除它们。
关于两列模板。您使用的是Bootstrap还是普通的CSS?
使用Bootstrap(在这种情况下为3):
<div class="row">
<div class="col-xs-6">{{columnOne}}</div>
<div class="col-xs-6">{{columnTwo}}</div>
</div>
使用纯CSS
.row { width: 100%; }
.column { width: 50% }