首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Meteor.Collection和Meteor.Collection.Cursor

Meteor.Collection和Meteor.Collection.Cursor
EN

Stack Overflow用户
提问于 2014-02-22 10:19:11
回答 2查看 5.6K关注 0票数 6

是什么

代码语言:javascript
复制
Meteor.Collection 

代码语言:javascript
复制
Meteor.Collection.Cursor

这两者之间有什么关系?确实:

代码语言:javascript
复制
new Meteor.Collection("name") 

创建一个具有参数名称的MONGODB集合?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-22 10:25:56

新的Meteor.Collection(“名称”)是否用参数名创建了MONGODB集合?

不完全同意。Meteor.Collection表示可能存在或可能不存在的MongoDB集合,但在插入文档之前实际上并不创建实际的MongoDB集合。

Meteor.Collection.Cursor是一个反应性数据源,它表示存在于MongoDB集合中的文档的一个不断变化的子集。此文档子集由传递给selector方法的options参数和Meteor.Collection.find(selector, options)参数指定。此find()方法返回游标对象。我认为流星博士很好地解释了游标:

find返回一个游标。它不会立即访问数据库或返回文档。游标提供fetch以返回所有匹配的文档,map和forEach迭代所有匹配的文档,并在匹配文档集更改时观察和observeChanges以注册回调。 集合游标不是查询快照。如果数据库在调用Collection.find和获取游标的结果之间发生了变化,或者在从游标中获取结果时,这些更改可能出现在结果集中,也可能不会出现。 游标是一个反应性数据源。当您第一次使用fetch、map或forEach检索游标的文档时(例如模板或自动运行),Meteor将注册对底层数据的依赖关系。对集合的任何更改,如果更改了光标中的文档,都会触发重新计算。若要禁用此行为,请将{反应性: false}作为要查找的选项传递。

游标的反应性很重要。如果我有一个游标对象,我可以通过调用它上的fetch()来检索它表示的当前文档集。如果数据在调用之间发生变化,fetch()方法实际上将返回一个不同的文档数组。“流星”中的许多东西自然地理解了游标的反应性。这就是为什么我们可以从模板助手函数返回一个游标对象:

代码语言:javascript
复制
Template.foo.documents = function() {
  return MyCollection.find(); // returns a cursor object, rather than an array of documents
};

在幕后,Meteor的模板系统知道如何在这个游标对象上调用fetch()。当服务器发送客户端更新告诉它集合已更改时,游标将被告知此更改,这将导致重新计算模板助手,从而导致模板被重新命名。

票数 10
EN

Stack Overflow用户

发布于 2014-02-22 10:24:07

Meteor.Collection是这样定义的对象:

代码语言:javascript
复制
var collection = new Meteor.Collection("collection");

然后,这个对象允许您将数据存储在mongo数据库中。注意,仅仅以这种方式定义集合,不会在mongo数据库中创建集合。集合将在您插入文档后创建。

因此,在您将文档插入到之前,您将使用而不是拥有一个名为name的集合。

游标是.find()操作的结果:

代码语言:javascript
复制
var cursor = collection.find()

您可能有1000 s的文档,游标允许您一个接一个地浏览它们,而不必将它们全部加载到服务器的RAM中。

然后,您可以使用forEach循环,或者使用docs:游标中指定的其他一些操作。

游标也是客户端上的一个反应性数据源,因此如果数据更改,可以使用相同的查询来更新DOM。

正如Neil提到的,它也值得知道Mongo是一个NoSQL数据库。这意味着您不必真正创建表/集合。您只需像上面那样定义一个集合,然后将一个文档插入其中。这样,如果集合不存在,就会创建它。如果它已经存在,它将被插入到该集合中。

浏览本地数据库

在发布应用程序之前,您不需要真正关注MongoDB,只需使用Meteor就可以与其进行交互。如果您想看看它是什么样子的话:

如果你想看看你的Mongo数据库。当流星运行时,在同一个目录中使用meteor mongo来打开mongo,或者使用像罗博蒙戈 (Gui工具)这样的工具连接到端口3002上的本地主机,以查看您的mongo数据库是什么样子。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21952898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档