2

node.js、アンダースコア、プロトタイプとともにnode-neo4jライブラリを使用しています。

データベース アダプタを拡張するモデルを作成しようとしています。最初にコードします。

BaseModel.js:

var _ = require("underscore"),
    Neo4jAdapter = require('../adapters/neo4j/Adapter');

function BaseModel() {

    _.extend(this, new Neo4jAdapter());
};

module.exports = BaseModel;

Neo4jAdapter.js:

var _ = require("underscore"),
    Neo4j = require('neo4j');

function Neo4jAdapter() {

    this.db = new Neo4j.GraphDatabase('http://localhost:3000');
};

Neo4jAdapter.prototype.insert = function(label, data, callback) {

    console.log('Neo4jAdapter', 'Attempt to insert node');

    if (label == '') throw 'Label is not defined';

    var query = [
        'CREATE (n:LABEL {mdata})',
        'RETURN n'
    ].join('\n').replace('LABEL', label);

    this.db.query(query, data, function (err, results) {
        if (err) throw err;

        console.log(results);

        var result = results[0].n._data.data;
        result.id = results[0].n._data.metadata.id;

        callback(result);
    });
};

module.exports = Neo4jAdapter;

奇妙なことは、私が得ているエラーです。すべての node.js/express コードをここに投稿するわけではありませんが、挿入機能を URL で叩いています。私が得る応答は次のとおりです。

メッセージ: オブジェクト #

GraphDatabase にはメソッド 'query' がありません

エラー: TypeError: オブジェクト #

GraphDatabase にはメソッド 'query' がありません

私の質問は次query()のとおりです。データベース オブジェクトに関数がないのはなぜですか

考えられる原因:挿入メソッドを呼び出すときに、アダプターの db オブジェクトがまだ設定されていないに違いありませんが、どうすればよいですか?

ありがとう

4

1 に答える 1

1

意図せずに新しいアルファ版をインストールした可能性があります。

同様の問題については、この問題を参照してください: https://github.com/thingdom/node-neo4j/issues/150

こんにちは@Christopheraburns!これを実行してください:

npm ls neo4j

API に重大な変更が加えられた node-neo4j v2 (現在、npm にはアルファ版があります) をインストールしたと思います。その npm ls の出力は、node-neo4j v1 または v2 がインストールされているかどうかを示します (例: 1.1.1 と 2.0.0-alpha3)。

次のようにして、1.1.1 にダウングレードできます。

npm uninstall neo4j npm install neo4j@1.1.1 --save

または、v2 (まだ WIP ですが、ほぼ完成しており、かなり安定しています) に興味がある場合は、master にマージされるまでの一時的なリンクを次に示します。

API ドキュメント (WIP): https://github.com/thingdom/node-neo4j/blob/v2/API_v2.md

お役に立てれば!これで問題が解決しない場合は、お気軽に再開してください。

そのため、おそらく neo4j をアンインストールして古いバージョンを再インストールするかcypher、v2 の方法を検討する必要があります。

https://github.com/thingdom/node-neo4j/blob/v2/API_v2.md#cypher

于 2015-03-09T10:46:53.933 に答える