0

I am using this Neo4J library and I would like to use promises instead. So I tried using bluebird's promisify. I created the following code...

    var db = new neo4j.GraphDatabase('....'),
        Promise = require('bluebird'),
        Cypher = Promise.promisify(db.cypher);

    var query = [
        'MATCH (node)',
        'OPTIONAL MATCH (node)-[rel]->( )',
        'RETURN DISTINCT node as node, collect(rel) as links'
    ].join('\n');

    var i = 0
    var onSuccess = function (results) {
            res.json(parseGraphResponse(results));
        },
        onFail = function (err) {
            console.log("Error " + err);
        };
    Cypher({
        query: query
    }).then(onSuccess).catch(onFail);

However, now I get the following error that is captured onError...

TypeError: Object # has no method 'http'

This version works fine...

    db.cypher({
        query: query
    }, function (err, results) {
        if (err) {
            console.log("Error " + err);
            return;
        }
        res.json(parseGraphResponse(results));
    });

A little more investigation shows that it is blowing up on this code...

GraphDatabase.prototype.cypher = function(opts, cb, _tx) {
  ...
  // Blows up here....
  return this.http({
        method: method,
        path: path,
        headers: headers,
        body: body,
        raw: true
      }, (function(_this) {
        return function(err, resp) {
          ...
        }
      })
}

Get fanpage accesstoken with Facebook SDK v5 for PHP

How to obtain access token fanpage ? I use Facebook SDK for PHP Version

   $fb = new Facebook\Facebook([
  'app_id' => '{app_id}',
  'app_secret' => '{app_secret}',
  'default_graph_version' => 'v2.4',
  ]);
$helper = $fb->getRedirectLoginHelper();
$permissions = ['email',
  'user_location',
  'publish_actions',
  'public_profile','user_posts','manage_pages','publish_pages']; // optional
$loginUrl = $helper->getLoginUrl('call-back.php', $permissions);

call-back.php When i use /{fanpage_id}?fields=id,name,category,access_token

$helper = $fb->getRedirectLoginHelper();
 $rb = $fb->get("/{fanpage_id}?  fields=id,name,category,access_token",$accessToken);

Results returned only show id,name,category {"id":"ddd","name":"dsa","category":"ddd"}' and it can not obtain access token.

When i use /me/accounts Results returns empty {"data":[]}'

Please help me get access token for fanpage . Thanks

4

2 に答える 2

1

私はこれがそれを修正するに違いない:

Cypher = Promise.promisify(db.cypher.bind(db));

this今後の参考のために、これをデバッグする方法は、 にはメソッドがないことを示すエラー メッセージを解釈することですが、httpメソッドがあることはわかっdbているため、thisに設定しないでくださいdb。実際、渡すとへの参照がdb.cypher失われます。thisdb

于 2015-08-04T20:19:14.480 に答える
0

答えに加えて、次を追加することをお勧めします...

if(db.cypher)
  Promise.promisify(db.cypher.bind(db));

DBがダウンしている場合、ifは失敗を防ぎます。私の場合、サーバーにアクセスできないときに XML ファイルを使用してデータをモックします。

于 2015-08-06T14:44:43.013 に答える