如何使用从webservice api获取的数据来保存集合中的元素

时间:2013-10-10 13:03:27

标签: meteor

用户保存行程(从一个城市到另一个城市),在将其存储到mongo集合之前,我的应用程序必须从mapquest api获取行程距离和时间。

你如何以及在哪里放置HTTP.call?服务器端 ?客户方?

1 个答案:

答案 0 :(得分:1)

  1. 安装http模块:

    meteor add http

  2. 创建一个服务器方法来调用Web服务。这是我的示例,其中用户放置URL并且代码返回页面标题。

  3. 服务器代码:

    if (Meteor.isServer) {
      Meteor.startup(function () {
        // code to run on server at startup
    
        Meteor.methods({
          getTitle: function(url) {
            var response = Meteor.http.call("GET", url);
            return response;
          }
        });
    

    这是一个客户端代码:

    Template.new_bookmark.events({
    
        // add new bookmark
        'keyup #add-bookmark' : function(e,t) {      
          if(e.which === 13)
          {
            var url = String(e.target.value || "");
    
            if(url) {
              Meteor.call("getTitle", url, function(err, response) {
                var url_title = response.content.match(/<title[^>]*>([^<]+)<\/title>/)[1];
                var timestamp = new Date().getTime();
                bookmarks.insert({Name:url_title,URL:url,tags:["empty"], Timestamp: timestamp});
              });
            }
          }
        }
    });
    

    如果用户在#add-bookmark字段中按“enter”,我会获得字段值并将其传递给server方法。 sever方法返回页面HTML源代码,我在客户端解析它,获取标题并将其存储在我的集合中。