gpt4 book ai didi

javascript - 复杂的 collection.find() 查询并使用 {{#each collection}} 渲染它

转载 作者:行者123 更新时间:2023-11-30 16:12:22 26 4
gpt4 key购买 nike

我在 MongoDB 中有一个集合“Members”,其中包含以下初始数据:

        Members.insert({
event: 1,
username: "Juan Machado",
answers: ["Tennis", "Golf", “Bowling”]
});

Members.insert({
event: 1,
username: "Elvis Crespo",
answers: [“FootBall”, “Tennis”, “Squash”]
});

Members.insert({
event: 1,
username: "Roman Santos",
answers: [“Golf”, “Bowling”]
});

如果登录用户是第一个插入的用户(“Juan Machado”),我想向他显示参加同一运动的其他成员的用户名,在我呈现的模板中显示类似这样的内容:


“Juan Machado” 这是你的比赛:

  • “罗曼·桑托斯”与您匹配: 1. 高尔夫 | 2. 保龄球
  • “Elvis Crespo”与你比赛: 1. 网球

对于如何使用 {{#Each Members}} 在 Meteor 中执行此操作有什么帮助吗?我在执行 collection.find({}) 查询以及在我的模板中呈现它时遇到困难。

最佳答案

首先让我们处理查找匹配成员的问题。您将要通过以下方式从服务器发布:

Meteor.publish('matchingMembers',function(){
let username = Meteor.users.find({ _id: this.userId }).username;
if ( username ){
let myAnswers = Members.find({ username: username }).answers;
if ( myAnswers ){
return Members.find({ answers: { $in: myAnswers }});
}
}
});

在您的模板中,假设您已订阅该出版物并且它已准备就绪,您将需要:

{{#each otherMembers}}
{{username}} matches with you in:
{{#each matchingAnswers}}
{{this}}
{{/each}}
{{/each}}

您需要以下助手:

Template.myTemplate.helpers({
otherMembers: function(){
let myUsername = Meteor.user().username;
return Members.find({ username: { $ne: myUsername }});
},
matchingAnswers: function(){
let myAnswers = Members.findOne({ username: Meteor.user().username }).answers;
// return the intersection of the other member's answers with the current user
return _.intersection(this.answers,myAnswers); /
}
});

关于javascript - 复杂的 collection.find() 查询并使用 {{#each collection}} 渲染它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36048262/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com