我如何使用cursor.map函数跳过集合中的第一个项目之一

时间:2014-06-09 18:59:35

标签: javascript map meteor skip

我有以下模板助手输出第一个{{url}}和所有{{thumb}} 但是如果{{thumb}}不确定如何在地图功能中执行此操作,我想跳过第一项。

Template.motionPictures.helpers({
  posts: function() {

  return  Posts.find({}, {fields: {thumb: 1, url: 1}}).map(function(post, index) {
  if (index === 0) {
    return post;
  } else {
    delete post.url;
    return post;
  }
});

}
});

当我在console.log中发布posts数组时,我得到以下内容

enter image description here

这是我的预期,但我希望数组中的第一个对象仅显示其{{url}}而不是{{thumb}}到目前为止所有建议只是删除对象,或者根本不删除。

3 个答案:

答案 0 :(得分:1)

您可以使用skip

Posts.find({}, {fields: {thumb: 1, url: 1}, skip: 1})..map(fun...

答案 1 :(得分:1)

如果我正确理解了这个问题,你只想在从辅助函数返回之前删除posts数组的第二项。为此,您只需将map的结果分配给变量,然后在其上调用splice即可。试一试:

Template.motionPictures.helpers({
  posts: function() {
    var posts =
      Posts
        .find({}, {fields: {thumb: 1, url: 1}})
        .map(function(post, index) {
          if (index === 0) {
            return post;
          } else {
            delete post.url;
            return post;
          }
        });

    posts.splice(1, 1);
    return posts;
  }
});

答案 2 :(得分:0)

好的,所以你们两个都有很好的建议但是我没有意识到我必须做什么,直到我做了那个控制台.log。

以下代码正如我想要的那样工作

Template.motionPictures.helpers({
  posts: function() {
   return Posts
        .find({}, {fields: {thumb: 1, url: 1}, sort: {createdAt: -1}})
        .map(function(post, index) {
          if (index === 0) {

            delete post.thumb;
            return post;


          } else {
            delete post.url;
            return post;
          }
        });
    }
});