如何使用 Meteor 监视服务器对集合的更改
How to monitor changes to a collection from the server with Meteor?
我想在
每次将新文档添加到给定集合时发送电子邮件。从服务器端订阅集合是使用 Meteor 执行此操作的正确方法吗?
发布/订阅提供了一种将观察者附加到订阅的方法,但这似乎只监视来自客户端的连接,而不是集合本身(当客户端连接到集合内容时,会调用整个集合内容"add")。
正确的方法是使用 Meteor.methods() 添加一个服务器方法。这方面的文档在这里: http://docs.meteor.com/#meteor_methods .
要发送电子邮件,您需要向另一台服务器发出请求,因为meteor还没有内置的电子邮件发送功能。发出 http 请求的文档在这里: http://docs.meteor.com/#meteor_http_post .
小例子:
Meteor.methods(
create_document: function (options) {
//insert the document
//send a post request to another server to send the email
}
)
然后在客户端上调用:
Meteor.call("create_document", <your options>);
我不这么认为。但是有一个使用YourCollection.deny()
的好方法:
在服务器上:
Meteor.startup(function(){
YourCollection.deny({
insert: function (userId, item) {
// Send your Email here, preferential
// in a asynchronous way to not slow down the insert
return false;
}
});
});
如果客户端将项目插入 YourCollection,服务器会首先运行所有拒绝函数(直到一个函数返回 true)来检查是否允许他,否则所有允许规则,除非其中一个函数返回 true。
如果至少有一个允许回调允许写入,并且没有拒绝回调拒绝写入,则允许写入继续。
请注意,您不能将 YourCollection.allow() 用于您想要的内容,因为它不一定会运行(如果没有拒绝,则一个允许就足够了)。
但要小心:如果您使用默认使用的不安全软件包,除非您设置自己的规则,否则一切都将被允许。正如您刚刚执行此操作时,您可能希望现在通过添加
YourCollection.allow({
insert: function (userId, item) {return true;},
update: function (userId, item) {return true;},
remove: function (userId, item) {return true;}
});
旁边的拒绝函数。
-最佳,一月
相关文章:
- 如何选择性地从主干集合和服务器中删除模型
- 我的 Meteor 项目如何通过服务器端 MongoDB/集合查找查询可靠地显示信息
- Meteor集合在服务器和客户端上有所不同
- 无法从本地node.js服务器访问mongolab中的集合
- 在不使用集合的情况下将服务器端计算返回到客户端
- Meteor:为集合服务器端创建筛选器,并将其存储在本地集合中.好主意
- 集合FS文件未上载到服务器
- 从服务器更新的 meteor 集合,不会在客户端上被动排序
- 使用内联服务器标记在 JavaScript 中进行集合迭代
- 将服务器变量设置为蒙戈集合 Meteor.js 中保存的数据
- 如何使用 Meteor 监视服务器对集合的更改
- 如何在express.js服务器上获取集合名称
- 主干持久性从服务器检索数据;t填充集合和模型
- Backbone.js只有在服务器成功(200状态)时才会添加到集合中
- 服务器集合更改时的Meteor触发事件
- 如何在metro.js中为图像集合添加描述(客户端和服务器端)
- 查询Meteor集合(在本地主机上工作,在服务器上失败)
- Meteor 0.9.1.1-从json端点填充到服务器端集合
- 哪里可以更快地对集合进行排序?客户端还是服务器端
- 我应该使用什么来过滤服务器上的backbonejs集合