@ bitnine-oss/ agensgraph- 驱动程序
节点的 AgensGraph 客户端 。 与 节点后置。 。 。 . 添加节点- postgres 的 AgensGraph 兼容性 。 支持 Cypher 查询语言以及顶点、边缘和路径图 数据类型.
使用量
安装
# if you are using yarn
$ yarn add pg @bitnine-oss/ag-driver
# or npm
$ npm install pg @bitnine-oss/ag-driver
连接
要通过节点-js与 AgensGraph 连接, 可以通过环境变量, 程序化, 或使用连接连接 URI (英语).
通过将一个带有配置值的对象传递到您的 AgensGraph 客户端并使用 client.connect () 要建立连接 :
var ag = require('@bitnine-oss/agensgraph-driver');
var config = {
user: 'username',
password: 'password',
database: 'database name of agensgraph',
host: '127.0.0.1',
port: 5432
};
const client = new ag.Client(config);
client.connect();
client.end();
使用客户端. end () 终止连接数据库 。 没有回调功能的调用客户端. end () 将会 回到承诺.
查询
要从 AgensGraph 获取数据,请使用查询() API 函数查询数据库 。 有多种方法可以发送 查询,包括直接通过文本、使用参数、在对象中传递以及使用已准备好的语句。 这个 以下举例说明了不同的可能的查询方法.
用户可以通过将文本直接传递给客户端.query(:
var ag = require('@bitnine-oss/agensgraph-driver');
const client = new ag.Client(Config);
client.connect();
client.query('SET graph_path = gpt'); //set graph path to gpt
client.query("MATCH (a:person)-[r:knows]->(b:person) WHERE b.name = 'Adam' RETURN a,r,b;", function (err, res) {
if (err) {
throw err;
} else {
console.log(res.rows);
}
});
client.end();
用户也可以发送参数化查询:
const text = "MATCH (a:person)-[:knows]->(b:person) WHERE b.name = $1 RETURN a;"
const values = ['Adam'];
client.connect();
client.query('SET graph_path = gpt'); //set graph path to gpt
client.query(text, values, function (err, res) {
if (err) {
throw err;
} else {
console.log(res.rows);
}
});
通过配置对象 :
const query = {
text: "MATCH (a:person)-[:knows]->(b:person) WHERE b.name = $1 RETURN a;",
values: ['Adam']
}
client.connect();
client.query('SET graph_path = gpt'); //set graph path to gpt
client.query(query, function (err, res) {
if (err) {
throw err;
} else {
console.log(res.rows);
}
});
用户也可以使用已命名的已准备的语句. 使用已准备好的语句可以缓存查询执行计划 每个连接语句上的服务器。 一旦一个查询名称被发送到服务器,它就会被解析并被执行. 打开 之后发送查询会跳过解析请求,转而发送查询名称:
const query = {
name: 'fetch-data',
text: "MATCH(n) WHERE n.name = 'Eve' RETURN n"
}
client.query(query, (err, res) => {
if (err) {
throw err;
} else {
console.log(res.rows);
}
});
创建数据
要在 AgensGraph 中创建数据, 查询 () API功能再次用于查询数据库. 下面是一个例子: 通过将文本直接传递给客户端.query( ) 创建 Cypher 数据 :
var ag = require('@bitnine-oss/ag-driver');
const client = new ag.Client(Config);
client.connect();
client.query('CREATE GRAPH gpt');
client.query('SET graph_path = gpt');
client.query("CREATE (a:person {name:'Alice'})-[r:knows {from: 'school'}]->(b:person {name: 'Bob'}) RETURN a,r,b", function (err, res) {
if (err) {
throw err;
} else {
a = res.rows[0].a;
r = res.rows[0].r;
b = res.rows[0].b;
console.log(a.label);
console.log(a.id);
console.log(a.props.name);
console.log(r.label);
console.log(r.id);
console.log(r.startVertexId);
console.log(r.endVertexID);
console.log(r.props.from);
console.log(b.label);
console.log(b.id);
console.log(b.props.name);
}
});
图表数据类型
以下是一个简要说明,详细说明了由garnsgraph-nodejs扩展处理的不同数据类型.
| 类函数 | 说明 | 属性 |
|---|---|---|
GraphId | 对应 graphid 类型. | 偶联、偶联 |
Vertex | 相应 vertex 类型。 它支持标签和属性的存取方法. | 标签、标识、道具 |
Edge | 相应 edge 类型。 它支持标签和属性的存取方法. | 标签、 id、 开始、 结束、 道具 |
Path | 相应 graphpath 类型。 它支持路径长度的访问方法,支持路径中顶点和边缘的访问. | 起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起去起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起起 |