0

我想连接到 NodeJs 中的 cosmos graph db。实施的样本来自文档。我已将示例更改为连接到模拟器,如下所示:

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 模拟器?

4

1 回答 1

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 和模拟器。(但产品是预发布的,所以这也可能会发生变化......):

在此处输入图像描述

于 2017-07-05T00:51:13.090 回答