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 オブジェクトがまだ設定されていないに違いありませんが、どうすればよいですか?
ありがとう