【问题标题】:JS functional object constructor - Neo4j Database has no method 'query'JS 功能对象构造函数 - Neo4j 数据库没有方法“查询”
【发布时间】:2015-05-10 09:39:38
【问题描述】:

我正在使用 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 访问插入函数。我得到的响应如下:

消息:对象#

GraphDatabase 没有“查询”方法

错误:类型错误:对象#

GraphDatabase 没有“查询”方法

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

可能的原因:我打赌调用插入方法时适配器的 db 对象尚未填充,但我该怎么做呢?

谢谢

【问题讨论】:

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


    【解决方案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 卸载 neo4j npm 安装 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

    【讨论】:

    • 确实是这个问题!非常感谢。从没想过我会遇到这样的问题:P
    • 不客气。 :) 几年后你就学会了如何快速解决问题,呵呵。
    猜你喜欢
    • 2019-07-13
    • 2015-10-11
    • 2018-04-29
    • 2013-08-02
    • 1970-01-01
    • 2014-02-14
    • 1970-01-01
    • 2013-08-30
    • 1970-01-01
    相关资源
    最近更新 更多