javascript - meteor.js - 在哪里调用集合查找

标签 javascript meteor

所以我有两个集合,“Posts”和“Locations”,以及一个简单的 html 表单,供用户将自己添加到 Posts 集合中。添加后,我会显示所有用户的列表,但如果他们具有位置集合中显示的属性,我还想向此列表添加一些额外的数据。

举个例子,用户表单包含姓名、年龄、位置,位置集合包含有关他们居住位置的信息,例如“英国首都伦敦”。如果来自伦敦的用户输入他们的详细信息,我希望显示他们在表单中输入的详细信息以及“您住在首都”(如果他们的位置位于“位置”集合中)。

因此,需要一些代码来插入表单中的详细信息:

post_submit.js:

Template.postSubmit.events({
  'submit form': function(e) {
    e.preventDefault();

    var post = {
      name: $(e.target).find('[id=usersName]').val().toUpperCase();,
      age: $(e.target).find('[id=age]').val(),
      location: $(e.target).find('[id=location]').val().toUpperCase(),
    };

    Meteor.call('postInsert', post, function(error, result) {
      // display the error to the user and abort
      if (error)
        return throwError(error.reason);

      Router.go('postPage', {_id: result._id});  
    });
  }
});

以及 posts.js

Meteor.methods({
  postInsert: function(postAttributes) {

    var post = _.extend(postAttributes, { 
      submitted: new Date(),
    });

    var postId = Posts.insert(post);

    return {
      _id: postId
    };
  }
});

但是,如何定义对 Locations 集合的订阅,以及在哪里调用该集合的“查找”以查找位置,然后使我能够在页面的其他部分中显示该位置。我确信这很简单,但我正在努力将这些点联系起来。

最佳答案

您必须创建一个新的发布来发布帖子,然后将位置发布为“依赖项”。有一个包可以让这一切变得非常简单。 copleykj:simple-publish将帮助您实现这一目标。自述文件中的示例应该足以帮助您入门。

关于javascript - meteor.js - 在哪里调用集合查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28644900/

相关文章:

javascript - 如何取消订阅收藏?

JQuery 动画和 Meteor

javascript - 多种出版物和订阅

javascript - 如何使用 WinJS 在 Windows Phone 8.1 中保存图像

javascript - 如何使用 jquery 将元素数组包装在元素中?

javascript - 为什么 "$(this.target).val()"(引用输入元素)的值是 "undefined"?

node.js - 在 Meteor.startup 在 Meteor 应用程序中运行服务器端之前,在单独文件中声明的集合未加载

javascript - 初学者在javascript中异步值传递和返回

javascript - 滚动溢出的元素时禁用窗口滚动

javascript - Var 更改后不会更新