无法通过Nodejs连接到Docker内部的Tarantool容器

我想用这个代码连接到tarantool cotainer:

import TarantoolConnection from 'tarantool-driver' let connection = new TarantoolConnection('192.168.99.100:3301'); connection.ping().then((res) => { console.log(res); }); 

在此之前,我开始容器:

 docker run -p 3301:3301 -d tarantool/tarantool:1.6 

但结果我什么也得不到。

如果我尝试为这个空间创build空间或\和索引:

 connection.eval("box.schema.space.create('myspace', {if_not_exists=true, temporary=true})").then((res) => { console.log(res); }); 

我得到这个错误:

UnhandledPromiseRejectionWarning:未处理的承诺拒绝(拒绝ID:1):错误:此套接字已closures

要么:

UnhandledPromiseRejectionWarning:未处理的承诺拒绝(拒绝ID:2):错误:连接将被销毁或已经销毁,创build另一个

正如我从错误中看到,所需的套接字已经closures,但我不明白为什么。

塔兰图司机的版本:

 "tarantool-driver": "2.0.5", 

我该如何解决它?

这里有两个问题:

  1. 你应该连接到localhost:3301而不是192.168.99.100:3301
  2. 你必须在connection.ping()connection.eval()之前使用connection.eval()

这是工作代码:

 const TarantoolConnection = require('tarantool-driver'); let connection = new TarantoolConnection({port: 3301}); connection.connect().then((res) => { console.log("Connected: " + res); connection.ping().then((res) => { console.log("Pong: " + res); }); connection.eval("box.schema.space.create('myspace', {if_not_exists=true, temporary=true})").then((res) => { console.log("Space created"); }); }); 

为了以防万一,我使用下面的命令来启动tarantool docker实例:

 $ docker run --rm -p 3301:3301 -t -i tarantool/tarantool:1.6 
Interesting Posts