通过NodeJ

时间:2017-07-04 14:14:53

标签: node.js azure-cosmosdb azure-emulator

我想连接到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模拟器的?

1 个答案:

答案 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在enter image description here上添加了一个模糊信息,表明他们目前不支持graphdb和表格。不过,我相信我的答案仍然是正确的:你可以使用.NET GraphDB SDK和模拟器。 (但产品是预发布的,所以这也可能会发生变化......):

boto3's put action