Meteor开发平台入门 互动版

查询结果 - 游标/Cursor

游标/Cursor对象代表了一个查询上下文,它只是记录了数据库地址、查询条件、 查询选项等选项,并没有物理地访问数据库。要真正地获取数据,需要使用游标对象 的方法:forEach()、map()或fetch()。

≡ 游标循环 - Cursor.forEach(callback,[thisArg])

forEach()方法用来对游标匹配的文档集中的每一个文档执行 callback参数指定的处理函数。下面的示例在终端打印persons集合中所有名为 Jason的文档的电话字段:

var demo = new Mongo.Collection("persons");
demo.find({name:"Jason"}).forEach(function(doc){
  console.log(doc.tel);
})

参数thisArg是可选的,用来设置在处理函数中的this对象。

≡游标映射 - Cursor.map(callback,[thisArg])

map()方法将游标匹配的每一个文档对象,通过callback参数指定的 映射函数映射为一个新的值,并返回这些新值构成的数组。下面的示例提取 persons集合中所有名为Jason的文档的电话:

var demo = new Mongo.Collection("persons");
var tels = demo.find({name:"Jason"}).map(function(doc){
  return doc.tel;
});

参数thisArg是可选的,用来设置在映射函数中的this对象。

≡ 游标提取 - Cursor.fetch()

fetch()方法提取游标匹配的全部文档,返回这些文档组成的数组:

var demo =new Mongo.Collection("persons");
var persons =demo.find().fetch();

≡ 游标计数 - Cursor.count()

count()方法返回游标匹配的文档数量。

执行以下命令复位test应用、删除源文件:

~/test$ meteor reset↵ ~/test$ rm -rf \*↵

执行以下命令拷贝col-cursor示例代码、运行并查看运行结果:

~/test$ cp ~/demos/col-cursor/* .↵ ~/test$ meteor↵

理解并修改col-cursor示例代码,通过练习掌握游标对象的使用方法。