sql >> データベース >  >> NoSQL >> MongoDB

FacebookAPIからMeteorにデータを挿入します

    ちょうど考えただけでそれが機能するようになりました。デイブとエムジーの助けに感謝します!以下は、同じ問題を抱えている人のためのコードです。また、これについてもっと良い方法があるかどうか教えてください。

    サーバーコード:

    function Facebook(accessToken) {
        this.fb = Meteor.require('fbgraph');
        this.accessToken = accessToken;
        this.fb.setAccessToken(this.accessToken);
        this.options = {
            timeout: 3000,
            pool: {maxSockets: Infinity},
            headers: {connection: "keep-alive"}
        }
        this.fb.setOptions(this.options);
    }
    
    Facebook.prototype.query = function(query, method) {
        var self = this;
        var method = (typeof method === 'undefined') ? 'get' : method;
        var data = Meteor.sync(function(done) {
            self.fb[method](query, function(err, res) {
                done(null, res);
            });
        });
        return data.result;
    }
    
    Facebook.prototype.getUserData = function() {
        return this.query('me/photos');
    }
    
    Meteor.methods({
        getUserData: function() {
            var fb = new Facebook(Meteor.user().services.facebook.accessToken);
            var data = fb.getUserData();
            _.forEach(data.data, function(photo) {
                Photos.insert(photo, function(err) { 
                    if(err) console.error(err); 
                });
            });
        }
    });
    
    Meteor.publish('picture', function() {
      return Photos.find();
    });
    

    コレクション:

    Photos = new Meteor.Collection('picture');
    

    クライアント:

    Meteor.subscribe('picture');
    
    Template.facebookphoto.helpers({
            pictures: function () {
                 return Photos.find();
              }     
    });
    
    Template.fbgraph.events({
        'click #btn-user-data': function(e) {
            Meteor.call('getUserData', function(err, data) {
                 $('#result').text(EJSON.stringify(data, undefined, 4));
             });
        }
    });
    

    HTMLテンプレート:

    <template name="fbgraph">
        <div id="main" class="row-fluid">
          {{> facebookphoto}}
        </div>
    
        <button class="btn" id="btn-user-data">Get User Data</button>
        <div class="well">
            <pre id="result"></pre>
        </div>
    </template>
    
    
    <template name="facebookphoto">
      <div class="photos">
        {{#each pictures}}
          {{> photoItem}}
        {{/each}}
      </div>
    </template>
    
    <template name="photoItem">
      <div class="photo">
        <div class="photo-content">
          <a href="{{source}}">
           <img class="img-rounded" src="{{picture}}">
          </a>
        </div>
      </div>
    </template>
    


    1. MongoDBで$elemMatchで並べ替えるにはどうすればよいですか?

    2. PHPスクリプトからRedisに接続しようとしたときに許可が拒否されたトラブルシューティング

    3. 127.0.0.1:27017への接続に失敗しました。理由:errno:111接続が拒否されました

    4. redisdbsizeコマンドの精度