0

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

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

4

1 回答 1

1
  1. 安装http模块:

    流星添加http

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

服务器代码:

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 字段中按“回车”,我会获取字段值并将其传递给服务器方法。sever 方法返回页面 HTML 源代码,我在客户端解析它,获取标题并将其存储在我的集合中。

于 2013-10-11T05:21:08.863 回答