JS功能对象构造函数 - Neo4j数据库没有方法'查询'

时间:2015-03-09 09:19:28

标签: javascript database neo4j underscore.js node-neo4j

我使用node-neo4j库以及node.js,下划线和原型。

我试图建立一个扩展数据库适配器的模型。代码优先。

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命中了insert函数。我得到的回应如下:

  

消息:对象#

     

GraphDatabase没有方法'查询'

     

错误:TypeError:Object#

     

GraphDatabase没有方法'查询'

我的问题是:为什么数据库对象没有query()函数,即使docs说它应该有一个?

可能的原因:我打赌在调用insert方法时还没有填充适配器的db对象,但是我该怎么做?

由于

1 个答案:

答案 0 :(得分:1)

您可能无意中安装了较新的alpha版本。

针对类似问题,请参阅此问题:https://github.com/thingdom/node-neo4j/issues/150

  你好@Christopheraburns!为我运行:

     

npm ls neo4j

     

我猜你已经安装了node-neo4j v2(我们有   目前在npm中的alpha版本),它对   API。 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!但差不多完成了,很漂亮   稳定),这里有一些临时链接,直到它合并到   主:

     

API文档(WIP):   https://github.com/thingdom/node-neo4j/blob/v2/API_v2.md

     

希望这有帮助!如果这不能解决问题,请随意重新打开   对你而言。

因此,您可能需要卸载neo4j并重新安装旧版本,或者查看v2中的cypher方法。

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