gpt4 book ai didi

javascript - 使用 MeteorJS 将包装在 Fiber 中的服务器端数据返回到客户端调用

转载 作者:行者123 更新时间:2023-11-28 08:30:05 25 4
gpt4 key购买 nike

我正在尝试让服务器端方法返回浏览器控制台中的推文 JSON 对象。到目前为止,我的应用程序可以从 Twitter API 中提取信息并将所有数据插入到集合中,但它不会将数据返回给调用。我已经用调用和方法进行了一系列测试来调试这个问题,我认为 Fiber 可能会改变这个调用/方法的工作方式。

http://sf-tweet-locator.meteor.com/

我希望能够从每个对象中提取经度和纬度,以便我可以在 map 上放置每条推文位置的图钉。我不确定我这样做是否是“最好”的方式,但我愿意接受所有建议!

if (Meteor.isClient) {
Meteor.call("tweets", function(error, results) {
console.log(results); //results.data should be a JSON object
});
}

Meteor.methods({
Fiber = Npm.require('fibers');

tweets: function(){
Twit = new TwitMaker({
consumer_key: '...',
consumer_secret: '...',
access_token: '...',
access_token_secret: '...'
});

sanFrancisco = [ '-122.75', '36.8', '-121.75', '37.8' ];

stream = Twit.stream('statuses/filter', { locations: sanFrancisco });

var wrappedInsert = Meteor.bindEnvironment(function(tweet) {
var userName = tweet.user.screen_name;
var userTweet = tweet.text;
console.log(userName + " says: " + userTweet);
Posts.insert(tweet);
return tweet;

}, "Failed to insert tweet into Posts collection.");

stream.on('tweet', function (tweet) {
wrappedInsert(tweet);
return tweet;
});
},
})

最佳答案

您可以将其作为出版物来完成 - 这样您就不会在 Posts 集合中插入无用的数据,

此示例创建一个发布,它将每条新推文发送到客户端上的 local-tweets 集合。

如果您需要引用源查询,您可以将 queryId 传递给订阅/发布,然后在每个推文文档中返回该查询。

if (Meteor.isClient){
var localTweets = new Meteor.Collection('local-tweets');

Meteor.subscribe("tweets", [ '-122.75', '36.8', '-121.75', '37.8' ]);

localTweets.observe({
added: function(doc) { console.log('tweet received!', doc); }
});
}

if (Meteor.isServer){
Meteor.publish("tweets", function(bbox){
var pub = this, stopped = false;
var Twit = new TwitMaker({
consumer_key: '...',
consumer_secret: '...',
access_token: '...',
access_token_secret: '...'
});
stream = Twit.stream('statuses/filter', { locations: bbox });

var publishTweet = Meteor.bindEnvironment(function(tweet) {
if (stopped) return;
pub.added("local-tweets", Random.id() /* or some other id*/, tweet);
}, "Failed to tweet.");

stream.on('tweet', publishTweet);

this.ready()

this.onStop(function(){
/* any other cleanup? */
stopped = true;
});
});

}

关于javascript - 使用 MeteorJS 将包装在 Fiber 中的服务器端数据返回到客户端调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21979867/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com