在 Meteor 应用程序上,根据 Mongo 中的字段值,将 class 添加到从 Mongo 接收的数据
Add class to data received from Mongo based on a field value in Mongo, on a Meteor app
我得到了 mongo 集合文档,其中包含一个包含大量其他对象的数组。这是一个简单的聊天应用程序。
我访问文档中的所有数据并显示它。尽管如此,我还是很难给 my-message
class 到 my 消息。当我在下面编写这段代码时,它会给出 all 条消息 my-message
class。 :/
那我做错了什么?
对象结构:
{
_id: "RCe9ZBS9PfkwrqKvg"
borrowerId: "Rg33iLJyRYqHyMpk4"
messages: Array[{text:messageBody, from:currentUserId, date:New Date()}]
ownerId: "fPv5yWJiSqFX3bAhR"
reqId: "KXErmpFJ7LiCbKsqc"
}
模板:
{{#with getMessages}}
{{#each messages}}
<p class="{{#if myMessages}} my-message {{/if}}">{{text}}</p>
{{/each}}
{{/with}}
帮手:
Template.reqMessages.helpers({
getMessages: function () {
var theReqId = FlowRouter.getParam("reqId");
return Messages.findOne({reqId: theReqId});
},
myMessages: function () {
var currentUserId = Meteor.userId();
var theReqId = FlowRouter.getParam("reqId");
return Messages.find({reqId: theReqId,
messages: [{$elemMatch: {
from: currentUserId
}}]});
}
});
我想你的意思是:
{{#with getMessages}}
{{#each messages}}
<p class="{{#if isMine}}my-message{{/if}}">{{text}}</p>
{{/each}}
{{/with}}
Template.reqMessages.helpers({
getMessages: function () {
var theReqId = FlowRouter.getParam("reqId");
return Messages.findOne({reqId: theReqId});
},
isMine: function () {
return this.from === Meteor.userId();
}
});
由于您已经在模板中遍历 messages 数组,助手的上下文 (this) 就是数组中的每个对象。您可以通过简单地比较 this.from
和 Meteor.userId()
.
来确定它是否来自用户
我得到了 mongo 集合文档,其中包含一个包含大量其他对象的数组。这是一个简单的聊天应用程序。
我访问文档中的所有数据并显示它。尽管如此,我还是很难给 my-message
class 到 my 消息。当我在下面编写这段代码时,它会给出 all 条消息 my-message
class。 :/
那我做错了什么?
对象结构:
{
_id: "RCe9ZBS9PfkwrqKvg"
borrowerId: "Rg33iLJyRYqHyMpk4"
messages: Array[{text:messageBody, from:currentUserId, date:New Date()}]
ownerId: "fPv5yWJiSqFX3bAhR"
reqId: "KXErmpFJ7LiCbKsqc"
}
模板:
{{#with getMessages}}
{{#each messages}}
<p class="{{#if myMessages}} my-message {{/if}}">{{text}}</p>
{{/each}}
{{/with}}
帮手:
Template.reqMessages.helpers({
getMessages: function () {
var theReqId = FlowRouter.getParam("reqId");
return Messages.findOne({reqId: theReqId});
},
myMessages: function () {
var currentUserId = Meteor.userId();
var theReqId = FlowRouter.getParam("reqId");
return Messages.find({reqId: theReqId,
messages: [{$elemMatch: {
from: currentUserId
}}]});
}
});
我想你的意思是:
{{#with getMessages}}
{{#each messages}}
<p class="{{#if isMine}}my-message{{/if}}">{{text}}</p>
{{/each}}
{{/with}}
Template.reqMessages.helpers({
getMessages: function () {
var theReqId = FlowRouter.getParam("reqId");
return Messages.findOne({reqId: theReqId});
},
isMine: function () {
return this.from === Meteor.userId();
}
});
由于您已经在模板中遍历 messages 数组,助手的上下文 (this) 就是数组中的每个对象。您可以通过简单地比较 this.from
和 Meteor.userId()
.