什么是
Meteor.Collection
Run Code Online (Sandbox Code Playgroud)
和
Meteor.Collection.Cursor
Run Code Online (Sandbox Code Playgroud)
?
这两者如何相互关联?做的:
new Meteor.Collection("name")
Run Code Online (Sandbox Code Playgroud)
MONGODB
使用参数名称创建一个集合?
sbk*_*ing 10
新的Meteor.Collection("name")是否创建了带参数名称的MONGODB集合?
不完全是.A Meteor.Collection
表示可能存在或可能不存在的MongoDB集合,但实际的MongoDB集合在插入文档之前实际上并未创建.
A Meteor.Collection.Cursor
是一个反应性数据源,表示MongoDB集合中存在的不断变化的文档子集.此子文档由传递给方法的selector
和options
参数指定Meteor.Collection.find(selector, options)
.此find()
方法返回游标对象.我认为Meteor Docs很好地解释了游标:
find
返回一个游标.它不会立即访问数据库或返回文档.游标提供fetch以返回所有匹配的文档,map和forEach迭代所有匹配的文档,并观察和观察更改以在匹配文档集更改时注册回调.集合游标不是查询快照.如果数据库在调用Collection.find和获取游标结果之间或在从游标获取结果时发生更改,则这些更改可能会也可能不会出现在结果集中.
游标是一个反应数据源.第一次在反应计算(例如,模板或自动运行)中使用fetch,map或forEach检索游标文档时,Meteor将注册对基础数据的依赖.对更改游标中文档的集合的任何更改都将触发重新计算.要禁用此行为,请将{reactive:false}作为选项进行查找.
游标的反应性很重要.如果我有一个游标对象,我可以通过调用fetch()
它来检索它所代表的当前文档集.如果数据在调用之间发生变化,则该fetch()
方法实际上将返回不同的文档数组.Meteor中的许多东西本身都能理解游标的反应性.这就是我们可以从模板助手函数返回游标对象的原因:
Template.foo.documents = function() {
return MyCollection.find(); // returns a cursor object, rather than an array of documents
};
Run Code Online (Sandbox Code Playgroud)
在幕后,Meteor的模板系统知道调用fetch()
这个光标对象.当服务器发送客户端更新告知它集合已更改时,将通知游标此更改,这会导致重新计算模板帮助程序,从而导致模板被重新呈现.
归档时间: |
|
查看次数: |
4863 次 |
最近记录: |