用户保存一次旅行(从一个城市到另一个城市),在将其存储到 mongo 集合之前,我的应用程序必须从 mapquest api 获取旅行距离和时间。
您将如何以及在哪里放置 HTTP.call ?服务器端 ?客户端 ?
用户保存一次旅行(从一个城市到另一个城市),在将其存储到 mongo 集合之前,我的应用程序必须从 mapquest api 获取旅行距离和时间。
您将如何以及在哪里放置 HTTP.call ?服务器端 ?客户端 ?
安装http模块:
流星添加http
创建一个服务器方法来调用 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 源代码,我在客户端解析它,获取标题并将其存储在我的集合中。