Meteor:如何最好地更新服务器或客户端上的记录
我有一个带有Meteor:如何最好地更新服务器或客户端上的记录,meteor,Meteor,我有一个带有data trackingId的链接列表,它基本上就是Random.id()的值。我目前的设置方式是,单击链接时,跟踪id将发送到服务器,并更新相关集合 问题是客户端不会自动更新,它需要页面刷新来更新链接列表 我需要设置一个活动标志并增加点击次数。我可以通过使用我要更新的集合的\u id作为trackingId来实现这一点(因为不受信任的代码只能通过\u id进行更新) 但是,我不希望客户端能够运行将设置active标志或增加clickcount的查询,从而绕过单击链接的整个点 最好
data trackingId
的链接列表,它基本上就是Random.id()的值。我目前的设置方式是,单击链接时,跟踪id将发送到服务器,并更新相关集合
问题是客户端不会自动更新,它需要页面刷新来更新链接列表
我需要设置一个活动
标志并增加点击次数
。我可以通过使用我要更新的集合的\u id
作为trackingId来实现这一点(因为不受信任的代码只能通过\u id
进行更新)
但是,我不希望客户端能够运行将设置active
标志或增加clickcount
的查询,从而绕过单击链接的整个点
最好的方法是什么?我唯一能想到的可能是在发布/订阅方法(我不太熟悉)中设置某种权限,或者在调用Meteor.call('serverMethod',trackingId)
时使用回调,这样我就可以再次拉回链接列表。我认为最好使用客户端并设置权限,但我不确定我到底需要做什么
欢迎所有建议:)我使用回调函数解决了这个问题。如果有人有更好的建议,我愿意接受
在客户端代码中:
Meteor.call('updateTracking', Session.get('trackingId'), function(err, data){
if(err){
console.log(err)
}
Session.set('links', data);
});
在server.js中
updateTracking: function(trackingId){
console.log('trackingId: ' + trackingId)
Tracking.update({ trackingId: trackingId},
{$set: {active: 0},
$inc: {clickcount: 1}
});
return Meteor.call('getLinks');
},
在我的记忆中,你可以创建自己的“反应变量”。。但我建议使用Meteor.call。它为我节省了很多时间:黛雅,我正在使用Meteor.call,它现在可以工作,只是没有反应。我会考虑一下的,干杯:)