我想连接到NodeJs中的cosmos图形数据库。实施的样本来自documentation。我已经将示例更改为连接到模拟器,如下所示:
var Gremlin = require("gremlin-secure");
const client = Gremlin.createClient(
8081,
"localhost", // or 127.0.0.1
{
"session": false,
"ssl": false,
"user": "/dbs/graphdb/colls/graphcollz",
"password": "C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw=="
});
console.log('Running Drop');
client.on('error', (err) => {
console.log(err.message);
});
我应该提到在上面提到的文件中:
Gremlin端点必须只是没有协议/端口号的主机名,例如mygraphdb.graphs.azure.com(不是https://mygraphdb.graphs.azure.com或mygraphdb.graphs.azure.com:433)。
因此,db的端点地址为localhost
,没有任何协议/端口。
此外,ssl设置为false
以防止“自签名证书”错误,并且在模拟器之前创建了graphdb和graphcollz。
这样,我在尝试执行以下查询时遇到以下错误:
client.execute('g.V().drop()', {}, (err, results) => {
if (err) return console.error(err);
console.log(results);
});
错误是:
阅读ECONNRESET
此外,Node js ECONNRESET帖子无法帮助解决连接到模拟器的问题。
现在,问题是如何通过NodeJS连接到cosmos graph db模拟器的?
答案 0 :(得分:0)
CosmosDB仿真器仅模拟DocumentDb端点。您可以将仿真器与.NET GraphDb SDK一起使用,但不能使用Node gremlin-secure模块。
区别在于:
.NET GraphDb SDK将Gremlin查询转换为客户端的DocumentDb查询。然后它调用Azure中的DocumentDb端点(your-site.documents.azure.com)。
Node GraphDb SDK将Gremlin查询作为字符串发送到Azure中的GraphDB端点(your-site.graphs.azure.com)。此端点似乎运行类似于.NET SDK的代码,但在服务器端,将Gremlin查询转换为DocumentDb查询。
编辑:看起来Azure在上添加了一个模糊信息,表明他们目前不支持graphdb和表格。不过,我相信我的答案仍然是正确的:你可以使用.NET GraphDB SDK和模拟器。 (但产品是预发布的,所以这也可能会发生变化......):