为什么我的mongodb查询的更新不总是反映?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么我的mongodb查询的更新不总是反映?相关的知识,希望对你有一定的参考价值。
我的MongoDB查询中有一个Sessions.get()
。这意味着显示的集合取决于Sessions.get()
值。为了让您更清楚地了解我的意思,请在下面查找我的查询:
Template.paymentB2C.onCreated( function(){
Session.set('pendingFilter', [ "Pending", "Failed", "Success" ]);
});
.
Template.paymentB2C.helpers({
'showTransactions': function(){
var transactions = paymentDetails.find({
paymentStatus:{$in: Session.get('Filter')}
}).fetch();
return transactions;
}
});
上面的代码显示了一个事务列表。显示的交易类型在交易类型上有所不同,表明:未成功,成功,待处理交易,如下所示:
0:
payersName: "Sa Acea"
paymentStatus: "Success"
_id: "D3gY4BoR2tvxdK4xv"
1:
payersName: "Paul Acea"
paymentStatus: "Pending"
_id: "ajCjYbLaDP7x4iAFK"
2:
payersName: "Simon Bolton"
paymentStatus: "Success"
_id: "K4d6wDrjRRdSyCkhW"
因此,我使用Filter
会话值作为过滤器来指示要显示的事务类型。
我可以通过以下事件在三种类型的过滤器之间进行交换。在下面找到代码。
Template.paymentB2C.events({
'click .ShowFailedTransactions' (event, instance) {
event.preventDefault();
Session.set('Filter', [ "Failed" ]);
},
'click .ShowSuccessfulTransactions' (event, instance) {
event.preventDefault();
Session.set('Filter', [ "Success" ]);
},
'click .ShowPendingTransactions' (event, instance) {
event.preventDefault();
Session.set('Filter', [ "Pending" ]);
},
});
请注意,集合中没有Failed事务类型。所以我觉得很奇怪,每当我选择Failed过滤器'click .ShowFailedTransactions'
期望所需效果为空白空页时,页面无法更新并继续显示上一个查询的结果,就像我从未点击过'click .ShowFailedTransactions'
一样。
我想也许Session.set('Filter', [ "Failed" ])
函数中的'click .ShowFailedTransactions'
不起作用,所以我添加了一个console.log();
来打印出Filter Session值,如下所示:
'click .ShowFailedTransactions' (event, instance) {
event.preventDefault();
Session.set('Filter', [ "Failed" ]);
var displaySession = Session.get('Filter');
console.log("Filter Value is: " +displaySession );
},
上面的代码在浏览器控制台中生成Filter Value is: Failed
,表明Filter会话值按预期更新。
我很困惑,为什么页面不会响应/更新这个。
请帮助建议解决此问题的方法。
您的代码中的问题是fetch
,它不是被动的!好消息是你不需要它。试试这个:
Template.paymentB2C.helpers({
'showTransactions': function(){
return paymentDetails.find({paymentStatus: {$in: Session.get('Filter')}});
}
});
以上是关于为什么我的mongodb查询的更新不总是反映?的主要内容,如果未能解决你的问题,请参考以下文章